1、字符串截取
substr( string, start_position, [ length ] )
例:
select substr('Hello World', 1, 2) from dual; --返回结果为 'He' 注:从字符串第一个字符开始截取长度为2的字符串 select substr('Hello World', 0, 2) from dual; --返回结果为 'He' 注:0和1都是表示截取的开始位置为第一个字符 select substr('Hello World', -4, 3) from dual; --返回结果为 'orl' 注:负数(-i)表示截取的开始位置为字符串右端向左数第i个字符 select substr('Hello World', 2) from dual; --返回结果为 'ello World' 注:省略截取字符个数,则截取至字符串末尾 select substr('Hello World', 9, 4) from dual; --返回结果为 'rld' 注:此时截取字符个数无效 select substr('Hello World', 9, -2) from dual; --返回结果为 null 注:截取字符个数小于1时,返回值为null
2、查找子串位置
instr( string1, string2 , [start_position] , [nth_appearance ] )
例:
select instr('aabbaacc', 'aa', 2, 1) from dual; --返回结果为5 注:从字符串'aabbaacc'第二字符开始查找第一次出现'aa'的位置 select instr('aabbaacc', 'aa', 2, 2) from dual; --返回结果为0 注:从字符串'aabbaacc'第二字符开始'aa'只出现了一次 select instr('aabbaacc', 'aa', -2, 2) from dual; --返回结果为1 注:从右向左数'aa'第二次出现的位置 select instr('aabbaacc', 'aa', 0, 1) from dual; --返回结果为0 注:查找位置应从1开始 select instr('aabbaacc', 'aa', 2) from dual; --返回结果为5 注:省略的参数为nth_appearance,默认为1 select instr('aabbaacc', 'aa') from dual; --返回结果为1 注:省略的两个参数默认都为1
3、字符串替换
replace( string, search_string, [replace_string] )
例:
select replace('000123','0','ab') from dual; --返回结果为'ababab123' 注:将字符串'000123'中的字符'0'替换成字符'ab' select replace('000123','0') from dual; --返回结果为'123' 注:省略参数replacement_string,将字符'0'替换为null,即删除所有字符'0'
4、字符串连接
concat(string1, string2) 或者 ||
例:
select concat('Hello ','world') from dual; --返回结果为'Hello world' select 'Hello '||'world' from dual; --返回结果为'Hello world'
5、获取字符串长度
length(string)
例:
select length(' Hello ') from dual; --返回结果为7
6、字符串去空格
ltrim(string) rtrim(string) trim(string)
例:
select ltrim(' a bc ') s1 from dual; --返回结果为'a bc ' 注:去除字符串左侧的空格
select rtrim(' a bc ') s1 from dual; --返回结果为' a bc' 注:去除字符串右侧的空格
select trim(' a bc ') s1 from dual; --返回结果为'a bc' 注:去除字符串左侧和右侧的空格
7、字符串去前缀和后缀
trim([leading | trailing] trim_char from string) ltrim(trim_char from string) rtrim(trim_char from string)
例:
select trim(leading '0' from '0000876700') from dual; --返回结果为'876700' 注:去除前缀
select trim(trailing '0' from '0000876700') from dual; --返回结果为'00008767' 注:去除后缀
select trim('0' from '0000876700') from dual; --返回结果为'8767' 注:去除前缀和后缀
select ltrim('0' from '0000876700') from dual; --返回结果为'876700' 注:去除前缀
select rtrim('0' from '0000876700') from dual; --返回结果为'00008767' 注:去除后缀
8、字符串中的单词首字母大写,其他小写
initcap(string)
例:
select initcap('smitH abc aBC') upp from dual; --返回结果为'Smith Abc Abc' 注:三个单词首字母变为大写,其他变为小写
select initcap('smi1th,abc"aBC') upp from dual; --返回结果为'Smi1th,Abc"Abc' 注:去除a-z A-Z 0-9意外的字符可以作为每个单词的分隔符
9、字符串全部字符大小写转换
lower(string) upper(string)
例:
select lower('HeLlO wOrLd') upp from dual; --返回结果为'hello world'
select upper('HeLlO wOrLd') upp from dual; --返回结果为'HELLO WORLD'
10、字符串左侧或右侧填充字符串
lpad(string1, length, [string2]) rpad(string1, length, [string2])
例:
select lpad('abc',2,'defg') from dual; --返回结果为'ab' 注;如果string1长度大于length,则返回string1左边length个字符
select lpad('abc',5,'defg') from dual; --返回结果为'deabc' 注:如果如果string1长度小于length,string1和string2连接后大于length,则返回连接后的左边length个字符
select lpad('abc',8,'defg') from dual; --返回结果为'defgdabc' 注:如果string1长度小于n,string1和string2连接后小于length,则返回string1与多个重复string2连接(总长度>=n)后的左边length个字符
select rpad('abc',2,'defg') from dual; --返回结果为'ab' select rpad('abc',5,'defg') from dual; --返回结果为'abcde'
select rpad('abc',8,'defg') from dual; --返回结果为'abcdefgd'