截取代分割符的字符串
以下SQL用于截取固定分隔符中指定的层次的字符串,比如,截取“华信/开发部/设计团队”中的“开发部”的SQL如下:
WITH T1 AS
(SELECT 1 C1, '华信/开发部/设计团队' C2 FROM DUAL)
SELECT REPLACE (REGEXP_SUBSTR(C2, '[^/]+', 1, 2/*取第二个值*/), ',', ' ') C2 FROM T1
其中"[^/]"中的"/"为分割符,"2/*取第二个值*/"中的2,表示取第2个值。
执行结果为:开发部
WITH T1 AS
(SELECT 1 C1, '华信,开发部,设计团队' C2 FROM DUAL)
SELECT REPLACE (REGEXP_SUBSTR(C2, '[^,]+', 1, 3/*取第3个值*/), ',', ' ') C2 FROM T1
执行结果为:设计团队
WITH T1 AS
(SELECT 1 C1, '华信,开发部,设计团队' C2 FROM DUAL)
SELECT DISTINCT C1, REPLACE(REGEXP_SUBSTR(C2, '[^,]+', 1, LEVEL), ',', ' ') C2
FROM T1
CONNECT BY LEVEL <= LENGTH(C2) - LENGTH(REPLACE(C2, ',', '')) + 1
ORDER BY C1
执行结果为:
C1 C2
1 1 华信
2 1 开发部
3 1 设计团队