通过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.length为负的情况,从右侧第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
阅读(10167) | 评论(0) | 转发(0) |