在开发过程中,或者编写sql 的时候,有时候会用到将一个有规律的由分隔符组成的字符串作为一个where条件中的某个过滤条件,而此时需要对这个字符串按照分隔符进行分割获取一个集合。
从oracle开发艺术书中,学到使用正则表达式的方式可以满足要求。
例子:
环境:oracle 10g
字符串为:‘ab,bc,cd’
转化为:
ab
bc
cd
sql为:
select substr(inlist,
instr(inlist, ',', 1, level) + 1,
instr(inlist, ',', 1, level + 1) -
instr(inlist, ',', 1, level) - 1) as value_str --获取两个分隔符之间的字符串
from (select ',' || 'ab,bc,cd' || ',' as inlist from dual) -- ,ab,bc,cd,
connect by level <=
length('ab,bc,cd') - length(replace('ab,bc,cd', ',', '')) + 1; --此行计算出有用分隔符分隔的字符的个数
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24349972/viewspace-759874/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24349972/viewspace-759874/