Oracle 常用函数之字符函数

本文详细介绍了SQL中常用的字符串操作函数,包括字符串截取、查找子串位置、替换、连接、获取长度、去空格等,并提供了丰富的示例帮助理解。

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'

 

转载于:https://www.cnblogs.com/Urbane/p/4203168.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值