substr()和instr()组合截取字符

通过substr和instr这两个函数组合应用就可以截取字符串中想要的字符。


substr函数主要用来截取字符串。
语法:
substr( string, start_position, [ length ] )
string:列或者字符串
start_position:开始的位置,正数表示从左开始,负数表示从右开始。如,1表示从左边第一个字符开始;-2表示从右侧第2个字符开始。
                         注意:无论是正负,都要从开始位置向右数
[ length ] :可写可不写。写的话,表示从截取开始位置往后n个字符。不写表示,从开始位置到结尾。

1.不写length的情况,表示从左面第一个字符,一直到最后。
SQL> select substr('/cms_download/download/file.do',1) from dual;
SUBSTR('/CMS_DOWNLOAD/DOWNLOAD
------------------------------
/cms_download/download/file.do

2.写length的情况,从左面第一个字符开始,一直到第14个字符。
SQL> select substr('/cms_download/download/file.do',1,14) from dual;
SUBSTR('/CMS_D
--------------
/cms_download/

3.start_position为负的情况,从右侧第2个字符开始,向右数2个字符。
SQL> select substr('/cms_download/download/file.do',-2,2) from dual;
SU
--
do



instr函数用来计算长度。

语法:
INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)
源字符串:字符串或者列
目标字符串:要定位的字符串
起始位置:开始的位置
匹配序号:目标字符串第几次出现

实验:
1.从左边第1个字符开始,字符"/"第2次出现,一共多少个字符。
SQL> select instr('/cms_download/download/file.do','/',1,2) from dual;
INSTR('/CMS_DOWNLOAD/DOWNLOAD/FILE.DO','/',1,2)
-----------------------------------------------
                              14



substr与instr组合,实现动态截取目标字符串
截取第2个/之前的字符串
SQL> select substr('/cms_download/download/file.do',2,instr('/cms_download/download/file.do','/',1,2)-2) from dual ;
SUBSTR('/CMS
------------
cms_download

instr('/cms_download/download/file.do','/',1,2)-2:定位从字符串开始到第二个/的length
substr('/cms_download/download/file.do',2,instr('/cms_download/download/file.do','/',1,2)-2):截取从第2个字符开始,到上面得到的length。

截取第2个/后面的字符串
select (substr('/cms_download/download/file.do',instr('/cms_download/download/file.do','/',1,2))) from dual;
SQL>
(SUBSTR('/CMS_DOW
-----------------
/download/file.do

posted on 2015-02-06 10:55  博客园Jason  阅读(1560)  评论(0编辑  收藏  举报

导航