mysql 逗号分隔的id转为逗号分隔的名称
有两张表,职位表(rec_job)和职位类别表(rec_job_type),其中 rec_job 表的 all_sub_job_types 字段存的是逗号隔开的职位类别ID,rec_job 表结构如下:
+--------+---------------------------+
| id | all_sub_job_types |
+--------+---------------------------+
| 1022 | 1,4,6 |
| 1023 | 5,8,9 |
现在根据 all_sub_job_types 列的 id 字符串,从rec_job_type表查找对应的 name:
SELECT a.id,GROUP_CONCAT(b.type_name) as type_name FROM rec_job a LEFT JOIN rec_job_type b ON FIND_IN_SET(b.id,a.all_sub_job_types) where id = 1022
得到结果:
如果想将英文逗号换成中文逗号,可以用REPLACE函数或者这样写:
GROUP_CONCAT(b.type_name order by b.type_name desc separator ',')
+++++++++++++++++每次遇到类似的问题,都得百度,所以记录下来方便以后使用+++++++++++++++++++++
group_contact 函数:
它主要配合 group by 使用,起着分组时,将涉及行的相应的字段串联成一个逗号隔开的字符串,
group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] ) 说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。
需要注意的是,group_concat默认是1024 字节,所以对应字段的长度需要考虑。
FIND_IN_SET函数:
功能类似于 IN 函数,IN一般用说 id in (4,5,6,7),如果4,5,6是一个变量时,就需要用FIND_IN_SET函数。
FIND_IN_SET(str,strlist) str 要查询的字符串 strlist 字段名 参数以”,”分隔 如 (1,2,6,8) 查询字段(strlist)中包含(str)的结果,返回结果为null或记录 假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。
一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。
如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND_IN_SET() 函数被优化,使用比特计算。
如果str不在strlist 或strlist 为空字符串,则返回值为 0 。
如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。
##############################下面是SqlServer的用法,将1,4,6转换成文字 XX,XX,XX #####################################
同样,还是上面那两张表:职位表(rec_job)和职位类别表(rec_job_type)
+--------+---------------------------+
| id | all_sub_job_types |
+--------+---------------------------+
| 1022 | 1,4,6 |
| 1023 | 5,8,9 |
select stuff((select ','+a.type_name from rec_job_type a where ',' + b.all_sub_job_types + ',' like '%,'+cast(a.id as varchar(64))+',%' for xml path('') ),1,1,'') as '职位类别' from rec_job b
--将一列的数据转成一行,逗号隔开 SELECT ',' + aa.[EName] from (select TOP (10) [EName] from [User]) aa FOR XML PATH ('')
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)