拆分逗号sql语句

该SQL查询使用子查询和substring_index函数从ldxm字段中提取class_id,通过join操作与help_topic表结合,计算每个class_id的数量,用于数据统计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select sclass_id ,count(*)as sl from(

SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(
a.ldxm,
‘,’,
b.help_topic_id + 1
),
‘,’ ,- 1
) sclass_id
FROM
1_6_ndyxldmkzzzdjyjxhdqkylb a
JOIN mysql.help_topic b ON b.help_topic_id < (
LENGTH(a.ldxm) - LENGTH(
REPLACE (a.ldxm, ‘,’, ‘’)
) + 1
))aaa

### 使用 SQL逗号分隔的字段拆分为多行 在处理包含逗号分隔值(CSV)的字符串时,可以采用多种方法将其转换为多行记录。以下是几种常见数据库系统的实现方式。 #### MySQL 实现方案 对于MySQL环境下的解决方案,在给定的例子中已经展示了通过`JOIN`操作配合内置函数来完成这一目标的方法[^2]: ```sql SELECT moe.id, SUBSTRING_INDEX(SUBSTRING_INDEX(moe.options, ',', b.help_topic_id + 1), ',', -1) AS name FROM t_questionnaire_record moe JOIN mysql.help_topic b ON b.help_topic_id < (LENGTH(moe.options) - LENGTH(REPLACE(moe.options, ',', '')) + 1) ORDER BY moe.id; ``` 此查询语句利用了`mysql.help_topic`表作为辅助工具生成连续整数序列,并结合`SUBSTRING_INDEX()`函数提取每个单独选项ID。 #### SQL Server 实现方案 针对SQL Server平台,则可以通过与其他系统视图联合的方式来达到相同效果[^3]: ```sql SELECT a.ProjGuid, LTRIM(RTRIM(SUBSTRING(a.ZygwAllGUID, number, CHARINDEX(',', a.ZygwAllGUID + ',', number) - number))) AS ZygwGUID, CjRoomTotal, QSDate FROM s_Contract AS a CROSS APPLY master..spt_values v WHERE v.type = 'P' AND v.number >= 1 AND v.number < LEN(a.ZygwAllGUID) AND SUBSTRING(',' + a.ZygwAllGUID, v.number, 1) = ','; ``` 这里使用了`master..spt_values`视图表提供必要的索引位置支持,并且应用了`LTRIM()`和`RTRIM()`去除可能存在的多余空白字符。 #### PostgreSQL 和其他 RDBMS 的通用做法 如果是在PostgreSQL或其他关系型数据库管理系统上执行此类任务,通常会推荐创建自定义函数或借助窗口函数与递归CTE共同作用来进行解析。然而,更简便的方式可能是引入第三方扩展库如pg_trgm或者jsonb功能集,它们能够简化复杂文本处理逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值