数据库拆分字段的实现方法:
用正则表达式拆分某一个字段,比如有a,b,c,d,e
sql写法如下:
select
regexp_substr('a,b,c,d,e,','[^,]+',1,rownum)
from
dual
connect
by
rownum<=length(regexp_replace('a,b,c,',
'[^,]',
null))
结果:
执行结果如下:
1
a
2
b
3
c
4
d
5
e
SELECT REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 1),REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 2),
REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 3),
DECODE(REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 5), NULL, NULL, REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 4)),
DECODE(REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 5), NULL, REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 4), REGEXP_SUBSTR(t.PATH_IDS||',', '[^,]+', 1, 5))
FROM 机构层级关系表 t
前三列根据正则匹配,获取对应的分割后的值,没有啥讲的,
第四列要判断是否存在第五列,如果不存在,则第四列要空,存在则用第四列的值
第五列要判断是否存在第五列,如果不存在,则给第四列的值,存在则用第五列的值
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)