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,'001' union all

select 2,'001,002' union all

select 3,'001,002,003'),

table2(code,name) as(

select '001','数学' union all

select '002','体育' union all

select '003','美术')

 

--用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

 

你可能感兴趣的:(sql)