逗号分隔字段,序列化表方法实现列转行

逗号分隔字段,序列化表方法实现列转行

 

qujing表:

 

 

创建序列表:

create table tb_sequence(id int auto_increment not null,primary key(id));
insert into tb_sequence values(),(),(),(),(),(),(),(),();

 

 分解步骤1:

    SELECT
        user_name,
        concat(mobile, ',') AS mobile,
        length(mobile) - length(REPLACE(mobile, ',', '')) + 1 AS size
    FROM
        qujing AS b

 

 

 

分解步骤2:

复制代码
SELECT * FROM
    tb_sequence AS a
CROSS JOIN (
    SELECT
        user_name,
        concat(mobile, ',') AS mobile,
        length(mobile) - length(REPLACE(mobile, ',', '')) + 1 AS size
    FROM
        qujing AS b
) AS b ON a.id <= b.size
复制代码

 

 

列转行sql:

复制代码
SELECT
    user_name,
    REPLACE (
        substring(
            substring_index(mobile, ',' , a.id),
            char_length(
                substring_index(mobile, ',', a.id - 1)
            ) + 1
        ),
        ',',
        ''
    ) AS mobile
FROM
    tb_sequence AS a
CROSS JOIN (
    SELECT
        user_name,
        concat(mobile, ',') AS mobile,
        length(mobile) - length(REPLACE(mobile, ',', '')) + 1 AS size
    FROM
        qujing AS b
) AS b ON a.id <= b.size
复制代码

 

 

 

 

 

posted @   草木物语  阅读(568)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示