MySQL按逗号拆分列为多行

图一
在这里插入图片描述
图二
在这里插入图片描述

按逗号拆分列为多行

图一 的展示效果转换成 图二 的展示效果
1、创建用户表(sys_user)

CREATE TABLE sys_user (
id BIGINT NOT NULL auto_increment COMMENT '主键',
login_name VARCHAR ( 64 ) NOT NULL COMMENT '登陆名',
PASSWORD VARCHAR ( 64 ) NOT NULL COMMENT '密码',
STATUS INT NOT NULL COMMENT '状态',
NAME VARCHAR ( 64 ) COMMENT '真实姓名',
role_id VARCHAR ( 255 ) COMMENT '角色id',
create_time datetime NOT NULL COMMENT '创建时间',
create_name VARCHAR ( 20 ) NOT NULL COMMENT '创建人',
modify_time datetime COMMENT '修改时间',
modify_name VARCHAR ( 20 ) COMMENT '修改人',
PRIMARY KEY ( id ),
UNIQUE KEY UNQ_SYS_USER_LOGIN_NAME ( login_name ) 
);

2、新增测试数据

TRUNCATE TABLE sys_user;
INSERT INTO sys_user ( login_name, PASSWORD, STATUS, NAME, role_id, create_time, create_name )
VALUES
	( 'admin', '123456', 1, '超级管理员', '1,2,3', now( ), 1 );

3、拆分列为多行SQL

SELECT
	a.login_name,
	a.NAME,
	SUBSTRING_INDEX( SUBSTRING_INDEX( a.role_id, ',', h.help_topic_id + 1 ), ',',- 1 ) AS role_id 
FROM
	sys_user a
	JOIN mysql.help_topic h ON h.help_topic_id < ( ( length( a.role_id ) - length( REPLACE ( a.role_id, ',', '' ) ) + 1 ) )
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值