From 5c62dc12e70e419d13cbbc27fb5fdb1cf532b24a Mon Sep 17 00:00:00 2001 From: wintsa Date: Fri, 23 Aug 2024 10:17:41 +0800 Subject: [PATCH] =?UTF-8?q?'=E6=9B=B4=E6=96=B0'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 手动执行sql合并7个关联字段为一个.sql | 45 ++++++++++++++++------------ 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/手动执行sql合并7个关联字段为一个.sql b/手动执行sql合并7个关联字段为一个.sql index 1e079f3..53cd774 100644 --- a/手动执行sql合并7个关联字段为一个.sql +++ b/手动执行sql合并7个关联字段为一个.sql @@ -8,53 +8,60 @@ USING ( ), tmp2 AS ( SELECT id, - NVL2(glgc, '58505_gcxx' || REGEXP_SUBSTR(glgc, '[^,]+', 1, LEVEL), '') AS wysb + 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 - CONNECT BY REGEXP_SUBSTR(glgc, '[^,]+', 1, LEVEL) IS NOT NULL + CONNECT BY LEVEL <= LENGTH(glgc) - LENGTH(REPLACE(glgc, ',', '')) + 1 AND PRIOR id = id AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL UNION ALL SELECT id, - NVL2(glgcxxsjd, '58505_tree' || REGEXP_SUBSTR(glgcxxsjd, '[^,]+', 1, LEVEL), '') AS wysb + 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 REGEXP_SUBSTR(glgcxxsjd, '[^,]+', 1, LEVEL) IS NOT NULL + 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(glgcgc, '58505_gcgc' || REGEXP_SUBSTR(glgcgc, '[^,]+', 1, LEVEL), '') AS wysb + 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),'') FROM tmp - CONNECT BY REGEXP_SUBSTR(glgcgc, '[^,]+', 1, LEVEL) IS NOT NULL + CONNECT BY LEVEL <= LENGTH(glgcgc) - LENGTH(REPLACE(glgcgc, ',', '')) + 1 AND PRIOR id = id AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL + UNION ALL - SELECT id, - NVL2(glzbgl, '58505_zb' || REGEXP_SUBSTR(glzbgl, '[^,]+', 1, LEVEL), '') AS wysb + 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),'') FROM tmp - CONNECT BY REGEXP_SUBSTR(glzbgl, '[^,]+', 1, LEVEL) IS NOT NULL + CONNECT BY LEVEL <= LENGTH(glzbgl) - LENGTH(REPLACE(glzbgl, ',', '')) + 1 AND PRIOR id = id AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL + UNION ALL - SELECT id, - NVL2(glhtgl, '58505_ht' || REGEXP_SUBSTR(glhtgl, '[^,]+', 1, LEVEL), '') AS wysb + 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),'') FROM tmp - CONNECT BY REGEXP_SUBSTR(glhtgl, '[^,]+', 1, LEVEL) IS NOT NULL + CONNECT BY LEVEL <= LENGTH(glhtgl) - LENGTH(REPLACE(glhtgl, ',', '')) + 1 AND PRIOR id = id AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL + UNION ALL - SELECT id, - NVL2(gltbgl, '58505_tb' || REGEXP_SUBSTR(gltbgl, '[^,]+', 1, LEVEL), '') AS wysb + 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),'') FROM tmp - CONNECT BY REGEXP_SUBSTR(gltbgl, '[^,]+', 1, LEVEL) IS NOT NULL + CONNECT BY LEVEL <= LENGTH(gltbgl) - LENGTH(REPLACE(gltbgl, ',', '')) + 1 AND PRIOR id = id AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL + UNION ALL - SELECT id, - NVL2(glqtgl, '58505_qt' || REGEXP_SUBSTR(glqtgl, '[^,]+', 1, LEVEL), '') AS wysb + 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),'') FROM tmp - CONNECT BY REGEXP_SUBSTR(glqtgl, '[^,]+', 1, LEVEL) IS NOT NULL + CONNECT BY LEVEL <= LENGTH(glqtgl) - LENGTH(REPLACE(glqtgl, ',', '')) + 1 AND PRIOR id = id AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL + ), tmp3 AS ( SELECT id,