将一个字段所有值分开成多行_MySQL.之 一行内容转换多行

本文介绍了如何通过SQL查询将`cds_var`表中`cds_value`列的值,如'CDS000023,1-100,200-300',转换为多行显示,每组ID为一行。通过`SUBSTRING_INDEX`函数实现数据拆分,适用于CDS000023对应的CHANGE_DATA_IDS需求。
摘要由CSDN通过智能技术生成

8df4e93fa091e340525ed8e062335568.png

描述:

将一行记录中的某一列值(值格式:数据之间用英文逗号隔开),将这一数据转换成多行。


例如:表 cds_var 中的 cds_value 中的数据格式:多个id之间使用英文的逗号进行隔开.

cff136ad44e1f52d92f3fc1046944d51.png

需求: 将上面的 cds_value 的值按照多行进行展示.效果如下:

d8f7af8d3a67df373fe4a9e293bff14f.png

解决方案:  

创建一个序列表(仅有一个字段:存储序列 1-1000),如下:

13070135b979047acb83eee606c31e12.png

0ab00f783057872637c7992a2a733415.png

编写SQL语句:

SELECT
    SUBSTRING_INDEX( SUBSTRING_INDEX( C.cds_value, ',', G.ID ), ',',- 1 ) IDS
FROM
    cds_var C
    JOIN var_index G ON G.ID <= ( LENGTH( C.cds_value ) - LENGTH( REPLACE ( C.cds_value, ',', '' ) ) + 1 )
WHERE
    C.cds_code = 'CDS000023'
    AND C.cds_key = 'CHANGE_DATA_IDS';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值