您的位置:首页 > 数据库 > Oracle

oracle 函数大全 之 substr

2012-07-18 12:56 309 查看
oracle的substr函数的用法


取得字符串中指定起始位置和长度的字符串 substr( string, start_position,
[ length
] )


如:


substr('This is a test',
6,
2) would
return
'is'


substr('This is a test',
6) would
return
'is a test'


substr('TechOnTheNet',
-3,
3) would
return
'Net'


substr('TechOnTheNet',
-6,
3) would
return
'The'

select substr('Thisisatest', -4, 2) value from dual 结果是
te

select substr('emros',-3,1) value from dual 结果是
r

substr('abcde',-6) = null

substr('abcde',-5) = 'abcde'

substr('abcde',-4) = 'bcde'

substr('abcde',-3) = 'cde'

substr('abcde',-2) = 'de'

substr('abcde',-1) = 'e'

substr('abcde',-0) = 'abcde'

补充说明:

substr,substrb均为字符串截取函数,都带有三个参数,第一个参数为所要截取的字符串,第二个参数为strart(索引均从1开始),第三个参数为length。

看下面的例子:

SQL> select substr('abcdef',3,4) from dual;

----

cdef

SQL> select substrb('abcdef',3,4) from dual;

----

cdef

再看下面的例子:

SQL> select substr('今天是个好日子',3,5) from dual;

----------

是个好日子

SQL> select substrb('今天是个好日子',3,5) from dual;

-----

天是

结论是substr是按照字数来算的,而substrb()是按照字节来算的。

总结:对于字母来说,substr与substrb作用时一样的,但对于汉字来说,substr是按字数来取值,而substrb是按字节来取值,当所取长度为奇数时,则自动舍弃最后一位字节。

类似的还有,

length与lengthb 长度计算函数

select length('你好') from dual ----output:2

select lengthb('你好') from dual ----output :4

instr与instrb 字符串查找函数 instr(原字符串,查的字符串,起始位置,第几个匹配) 返回字符串位置,找不到返回0 .

select instr('日日花前长病酒','花前',1,1) from dual ----output:3

select instrb('日日花前长病酒','花前',1,1) from dual ----output:5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: