Oracle正则表达式分割字符串

时间:2021-09-28 15:20:44

      有时候需要以特定的字符(如,/ *等)分割字符串,取出分割后的第几个子字符串,这时,可以用Oracle的正则表达式。

      例如有个字符串'/孟硕/保红燕/小二黑/花无缺',我们想取出'/'分割后的第三个子字符串'小二黑':


SQL>select regexp_substr('/孟硕/保红燕/小二黑/花无缺','[^/]+',1,3) res from dual;

       即可得到'小二黑'。

      上面的参数1:'/孟硕/保红燕/小二黑/花无缺'为待分割的目标字符串;

      上面的参数2:'[^/]+'表示除去'/'字符的剩余的多个字符,'^'表示否的意思,+表示一到多个字符;

      上面的参数3:1表示从目标字符串的第一个字符开始;

      上面的参数4:3表示分割后得到的第三个子字符串。


       Another example:想从'代晓燕/保红燕*&/张燕!三只燕'字符串中得到第二个'保红燕'可以用如下SQL:

SQL>select regexp_substr('代晓燕/保红燕*&/张燕!三只燕','[^/*&!]+',1,2) res from dual