ORACLE SQL截取字符串

  如何从目标的字符串中检索到自己需要的子串,这里使用substr()和instr()函数进行截取
substr()函数就不多说了。instr(str1,str2,tag1,tag2)函数中共有4个参数,
参数1:代表源字符串,要在此字符串中查找。
参数2:代表要在string1中查找的字符串,比如我们需要根据“,”或者“-”进行截取,这个就是参数2。
参数3:代表string1 的哪个位置开始查找.此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引
参数4:代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错
  下面是一些截取例子
1)select substr('DCYK030-888-999',0,instr('DCYK030-0-1', '-', 1, 1)-1) from dual; 返回值为DCYK030,也就是取“-”的前面的字串
2)select substr('DCYK030-888-999',instr('DCYK030-888-999', '-', 1, 1)+1,instr('DCYK030-888-999', '-', 1, 2)-instr('DCYK030-888-999', '-', 1, 1)-1) from dual;返回值为888,也就是取中间的子串
3)select substr('DCYK030-888-999',instr('DCYK030-888-999', '-', 1, 2)+1,length('DCYK030-888-999')-instr('DCYK030-888-999', '-', 1, 2)) from dual;
返回值为999,取最后的子串。
记录下来以作参考。

猜你喜欢

转载自bainan0309.iteye.com/blog/1991323