Oracle中字符和字符串的截取

来源:互联网 发布:漫画美图软件 编辑:程序博客网 时间:2024/05/05 14:26

日常工作中,经常会遇到字符串截取的场景,有时候需要截取字符串的前面部分,有时则需要截取字符串的后半部分,甚至有时需要去除中间的某一个字符或字符串,这时玩家们需要掌握日常常用的几个oracle库函数即可轻而易举的达到想要的效果。

首先,trim,ltrim,rtrim 了解AS400的同仁应该对这个不陌生,接下来一个一个结果展示,加深理解哈。

1. trim 

--trim去除字符串前后空格
SELECT trim(' abc def ') FROM dual; --abc def
--trim去除单个字符
rim去除字符的写法:
--表示字符串string2去除前面|后面|前后面(leading|trailing|both)的字符string1,默认去除方式为both
SELECT TRIM(leading|trailing|both string1 FROM string2) FROM dual;
SELECT trim(leading 'c' from 'cabc') FROM dual;--abc 去除前面的字符
SELECT trim(trailing 'c' from 'cabc') FROM dual;--cab 去除后面的字符
SELECT trim(both 'c' from 'cabc') FROM dual;--ab 去除前后两端的字符

注:trim去除字符只能是单个字符,如下,要去除的字符若为字符集则报错
SQL> SELECT trim(trailing 'ab' from 'abceabd') FROM dual;
SELECT trim(trailing 'ab' from 'abceabd') FROM dual
ORA-30001: 截取集仅能有一个字符

2. ltrim 

--ltrim 去除字符串前面的空格
SELECT ltrim(' abc def ') FROM dual;--abc def 
--ltrim 去除字符
--表示字符串string1去除前面与string2字符集匹配的,若无匹配则结束返回
SELECT ltrim(string1,string2) FROM dual;


SELECT ltrim('abcdewcab','ab') FROM dual; --cdewcab

3.rtrim


--rtrim 去除字符串后面的空格
SELECT rtrim(' abc def ') FROM dual; -- abc def
--rtrim 去除字符
--rtrim与ltrim类似,只是去除的是右边算起匹配的字符
SELECT rtrim(string1,string2) FROM dual;


SELECT rtrim('abcdewcab','ab') FROM dual; --abcdewc


但是trim相关的智能去除字符串前面或者后面的内容,如果出现中间的部分,我们可以用replace函数还处理

SELECT replace('123000','23','') FROM dual; --1000

这种结果时完全可以的,但是,如果一个字符串中出现两个‘23’,那么截取的结果就会出现问题啦。

SELECT replace('123000123','23','') FROM dual;--10001

为了结果这个问题,我们可以使用substr来解决。




0 0