如下图 , 左边是原始数据,右边是想要的结果。
可以确定的是XMDD如果大于3位,一定可以用英文逗号分隔。
2条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
为了解决这个问题,我们可以使用SQL语句来处理。首先,我们假设原始数据存储在一个表中,表名为
original_data
,包含两列:VNAME
(姓名)和XMDD
(编码)。目标是将XMDD
中的逗号分隔的值拆分为多行。以下是实现这一目标的SQL查询:-- 创建一个临时表来存储拆分后的结果 CREATE TEMPORARY TABLE IF NOT EXISTS split_data AS SELECT VNAME, SUBSTRING_INDEX(SUBSTRING_INDEX(XMDD, ',', numbers.n), ',', -1) AS XMDD FROM original_data CROSS JOIN ( SELECT a.N + b.N * 10 + 1 n FROM ( SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) a CROSS JOIN ( SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) b ORDER BY n ) numbers WHERE XMDD REGEXP ',' OR XMDD RLIKE '^[^,]+$' ORDER BY VNAME, n;
这个查询首先创建了一个数字序列(从1到100),然后通过
CROSS JOIN
与原始数据表连接,使用SUBSTRING_INDEX
函数来拆分XMDD
字段中的值。REGEXP
和RLIKE
用于检查XMDD
是否包含逗号或是否是一个非逗号分割的字符串。然而,上述SQL语句可能在某些数据库系统中不适用,因为它依赖于特定的SQL方言。对于MySQL,上述代码应该可以正常工作。对于其他数据库系统,例如PostgreSQL或SQL Server,你可能需要调整生成数字序列的方法以及字符串函数的使用。
如果你的数据中
XMDD
字段总是包含逗号分隔的列表,你可以简化查询,去除正则表达式的部分:CREATE TEMPORARY TABLE IF NOT EXISTS split_data AS SELECT VNAME, SUBSTRING_INDEX(SUBSTRING_INDEX(XMDD, ',', numbers.n), ',', -1) AS XMDD FROM original_data CROSS JOIN ( -- 数字序列生成,根据实际需要调整范围 SELECT ROW_NUMBER() OVER () as n FROM (SELECT 1 UNION ALL SELECT 1 UNION ... UNION ALL SELECT 1) t(n) ) numbers WHERE XMDD LIKE '%,%' ORDER BY VNAME, n;
在这个版本中,我们假设
XMDD
字段总是包含至少一个逗号。如果XMDD
字段可能不包含逗号,且你希望保留这些记录,你需要在查询中添加额外的逻辑来处理这种情况。最后,确保在执行完查询后清理临时表,除非你打算保留它以供后续分析使用。这可以通过简单的
DROP TABLE split_data;
命令完成。请根据你的具体数据库环境和需求调整上述SQL语句。如果需要进一步的帮助,例如针对特定数据库系统的优化,或者在执行过程中遇到任何问题,请随时告知。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 问题重发,R语言:代码运行过程中出现如下警告,请求如何解决!
- ¥15 苍穹外卖拦截器token为null
- ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
- ¥20 wpf datagrid单元闪烁效果失灵
- ¥15 券商软件上市公司信息获取问题
- ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
- ¥15 Android studio AVD启动不了
- ¥15 陆空双模式无人机怎么做
- ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
- ¥15 C#中的编译平台的区别影响