sql – 如何将逗号分隔列转换为db2中的多个行
发布时间:2021-02-20 10:36:20 所属栏目:MsSql教程 来源:网络整理
导读:我有下表(引用的数量是可变的): Id | FK_ID| Reference |-----------------------1 2100 GI2,GI322 2344 GI56 我需要以下结果: Id | FK_ID| Reference |-----------------------1 2100 GI2 2 2100 GI323 2344 GI56 有没有使用DB2转换数据的简短方法? 解决
|
我有下表(引用的数量是可变的): Id | FK_ID| Reference | ----------------------- 1 2100 GI2,GI32 2 2344 GI56 我需要以下结果: Id | FK_ID| Reference | ----------------------- 1 2100 GI2 2 2100 GI32 3 2344 GI56 有没有使用DB2转换数据的简短方法? 解决方法你真的不应该存储这样的数据.幸运的是,有一种方法可以通过递归SQL来消除损坏,具体如下:WITH unpivot (lvl,id,fk_ref,reference,tail) AS (
SELECT 1,CASE WHEN LOCATE(',',reference) > 0
THEN TRIM(LEFT(reference,LOCATE(',reference)-1))
ELSE TRIM(reference)
END,reference) > 0
THEN SUBSTR(reference,reference)+1)
ELSE ''
END
FROM yourtable
UNION ALL
SELECT lvl + 1,tail) > 0
THEN TRIM(LEFT(tail,tail)-1))
ELSE TRIM(tail)
END,tail) > 0
THEN SUBSTR(tail,tail)+1)
ELSE ''
END
FROM unpivot
WHERE lvl < 100 AND tail != '')
SELECT id,reference FROM unpivot
PS.未经测试. (编辑:邯郸站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

