Compare commits

...

2 Commits

Author SHA1 Message Date
c454b750f6 update 2024-08-23 11:20:46 +08:00
2d48f2743b 使用substr和instr代替了正则匹配性能慢的问题 2024-08-23 11:20:07 +08:00

View File

@ -8,7 +8,7 @@ USING (
),
tmp2 AS (
SELECT id,
NVL2(glgc, '58505_gcxx' || SUBSTR(TO_CHAR(glgc), INSTR(TO_CHAR(glgc), ',', 1, LEVEL) + 1, INSTR(TO_CHAR(glgc), ',', 1, LEVEL + 1) - INSTR(TO_CHAR(glgc), ',', 1, LEVEL) - 1),'')
NVL2(glgc, '58505_gcxx' || SUBSTR(','||TO_CHAR(glgc)||',', INSTR(','||TO_CHAR(glgc)||',', ',', 1, LEVEL) + 1, INSTR(','||TO_CHAR(glgc)||',', ',', 1, LEVEL + 1) - INSTR(','||TO_CHAR(glgc)||',', ',', 1, LEVEL) - 1),'')
AS wysb
FROM tmp
@ -17,14 +17,14 @@ tmp2 AS (
AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL
UNION ALL
SELECT id,
NVL2(glgcxxsjd, '58505_tree' || SUBSTR(TO_CHAR(glgcxxsjd), INSTR(TO_CHAR(glgcxxsjd), ',', 1, LEVEL) + 1, INSTR(TO_CHAR(glgcxxsjd), ',', 1, LEVEL + 1) - INSTR(TO_CHAR(glgcxxsjd), ',', 1, LEVEL) - 1),'')
NVL2(glgcxxsjd, '58505_tree' || SUBSTR(','||TO_CHAR(glgcxxsjd)||',', INSTR(','||TO_CHAR(glgcxxsjd)||',', ',', 1, LEVEL) + 1, INSTR(','||TO_CHAR(glgcxxsjd)||',', ',', 1, LEVEL + 1) - INSTR(','||TO_CHAR(glgcxxsjd)||',', ',', 1, LEVEL) - 1),'')
FROM tmp
CONNECT BY LEVEL <= LENGTH(glgcxxsjd) - LENGTH(REPLACE(glgcxxsjd, ',', '')) + 1
AND PRIOR id = id
AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL
UNION ALL
SELECT id,
NVL2(glgcxxsjd, '58505_gcgc' || SUBSTR(TO_CHAR(glgcgc), INSTR(TO_CHAR(glgcgc), ',', 1, LEVEL) + 1, INSTR(TO_CHAR(glgcgc), ',', 1, LEVEL + 1) - INSTR(TO_CHAR(glgcgc), ',', 1, LEVEL) - 1),'')
NVL2(glgcxxsjd, '58505_gcgc' || SUBSTR(','||TO_CHAR(glgcgc)||',', INSTR(','||TO_CHAR(glgcgc)||',', ',', 1, LEVEL) + 1, INSTR(','||TO_CHAR(glgcgc)||',', ',', 1, LEVEL + 1) - INSTR(','||TO_CHAR(glgcgc)||',', ',', 1, LEVEL) - 1),'')
FROM tmp
CONNECT BY LEVEL <= LENGTH(glgcgc) - LENGTH(REPLACE(glgcgc, ',', '')) + 1
AND PRIOR id = id
@ -32,7 +32,7 @@ tmp2 AS (
UNION ALL
SELECT id,
NVL2(glgcxxsjd, '58505_zb' || SUBSTR(TO_CHAR(glzbgl), INSTR(TO_CHAR(glzbgl), ',', 1, LEVEL) + 1, INSTR(TO_CHAR(glzbgl), ',', 1, LEVEL + 1) - INSTR(TO_CHAR(glzbgl), ',', 1, LEVEL) - 1),'')
NVL2(glgcxxsjd, '58505_zb' || SUBSTR(','||TO_CHAR(glzbgl)||',', INSTR(','||TO_CHAR(glzbgl)||',', ',', 1, LEVEL) + 1, INSTR(','||TO_CHAR(glzbgl)||',', ',', 1, LEVEL + 1) - INSTR(','||TO_CHAR(glzbgl)||',', ',', 1, LEVEL) - 1),'')
FROM tmp
CONNECT BY LEVEL <= LENGTH(glzbgl) - LENGTH(REPLACE(glzbgl, ',', '')) + 1
AND PRIOR id = id
@ -40,7 +40,7 @@ tmp2 AS (
UNION ALL
SELECT id,
NVL2(glgcxxsjd, '58505_ht' || SUBSTR(TO_CHAR(glhtgl), INSTR(TO_CHAR(glhtgl), ',', 1, LEVEL) + 1, INSTR(TO_CHAR(glhtgl), ',', 1, LEVEL + 1) - INSTR(TO_CHAR(glhtgl), ',', 1, LEVEL) - 1),'')
NVL2(glgcxxsjd, '58505_ht' || SUBSTR(','||TO_CHAR(glhtgl)||',', INSTR(','||TO_CHAR(glhtgl)||',', ',', 1, LEVEL) + 1, INSTR(','||TO_CHAR(glhtgl)||',', ',', 1, LEVEL + 1) - INSTR(','||TO_CHAR(glhtgl)||',', ',', 1, LEVEL) - 1),'')
FROM tmp
CONNECT BY LEVEL <= LENGTH(glhtgl) - LENGTH(REPLACE(glhtgl, ',', '')) + 1
AND PRIOR id = id
@ -48,7 +48,7 @@ tmp2 AS (
UNION ALL
SELECT id,
NVL2(glgcxxsjd, '58505_tb' || SUBSTR(TO_CHAR(gltbgl), INSTR(TO_CHAR(gltbgl), ',', 1, LEVEL) + 1, INSTR(TO_CHAR(gltbgl), ',', 1, LEVEL + 1) - INSTR(TO_CHAR(gltbgl), ',', 1, LEVEL) - 1),'')
NVL2(glgcxxsjd, '58505_tb' || SUBSTR(','||TO_CHAR(gltbgl)||',', INSTR(','||TO_CHAR(gltbgl)||',', ',', 1, LEVEL) + 1, INSTR(','||TO_CHAR(gltbgl)||',', ',', 1, LEVEL + 1) - INSTR(','||TO_CHAR(gltbgl)||',', ',', 1, LEVEL) - 1),'')
FROM tmp
CONNECT BY LEVEL <= LENGTH(gltbgl) - LENGTH(REPLACE(gltbgl, ',', '')) + 1
AND PRIOR id = id
@ -56,7 +56,7 @@ tmp2 AS (
UNION ALL
SELECT id,
NVL2(glgcxxsjd, '58505_qt' || SUBSTR(TO_CHAR(glqtgl), INSTR(TO_CHAR(glqtgl), ',', 1, LEVEL) + 1, INSTR(TO_CHAR(glqtgl), ',', 1, LEVEL + 1) - INSTR(TO_CHAR(glqtgl), ',', 1, LEVEL) - 1),'')
NVL2(glgcxxsjd, '58505_qt' || SUBSTR(','||TO_CHAR(glqtgl)||',', INSTR(','||TO_CHAR(glqtgl)||',', ',', 1, LEVEL) + 1, INSTR(','||TO_CHAR(glqtgl)||',', ',', 1, LEVEL + 1) - INSTR(','||TO_CHAR(glqtgl)||',', ',', 1, LEVEL) - 1),'')
FROM tmp
CONNECT BY LEVEL <= LENGTH(glqtgl) - LENGTH(REPLACE(glqtgl, ',', '')) + 1
AND PRIOR id = id