Oracle数据库字段拆分

有个机构层级关系表,里面有个path_ids字段(如图所示1),现在想把它拆分为五个字段要求如图2,这个该怎么拆分,求教各位大神!谢谢
最新回答
や泪漫延街

2024-09-22 01:20:15

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

前三列根据正则匹配,获取对应的分割后的值,没有啥讲的,

第四列要判断是否存在第五列,如果不存在,则第四列要空,存在则用第四列的值

第五列要判断是否存在第五列,如果不存在,则给第四列的值,存在则用第五列的值