SQL 字段里有逗号隔开的数据的取值

时间:2023-03-09 07:10:14
SQL 字段里有逗号隔开的数据的取值
table 1 :                    
id code
1 001
2 001,002
3 001,002,003 table 2:
code name
001 数学
002 体育
003 美术 要求结果
id name
1 数学
2 数学,体育
3 数学,体育,美术
--测试数据
with table1(id,code) as (
select 1,'' union all
select 2,'001,002' union all
select 3,'001,002,003'),
table2(code,name) as(
select '','数学' union all
select '','体育' union all
select '','美术') --用charindex和for xml path实现批量替换的功能,适用于sql server 2005及以上版本
select table1.id,stuff((
select ','+table2.name from table2
where charindex(','+table2.code+',',','+table1.code+',')>0
order by table2.code
for xml path('')
),1,1,'') as name
from table1