select * from 表A a left join 表B b on charindex(','+cast(b.id as varchar)+',' , ','+a.char+',')
--创建一个自定义函数,用来完成替换工作create function fgetname(@idstr varchar(50)) returns varchar(200) as begin set @idstr=','+@idstr+',' select @idstr=replace(@idstr,','+id+',',','+name+',') from 表B --注意,我是将你表B的id字段设置为字符型,如果是数字型,就要用cast(id as varchar)来进行数据类型转换 return(substring(@idstr,2,len(@idstr)-2)) endgo--调用自定义函数来得到结果 select id,char,dbo.fgetname(char),m,n from 表A
returns varchar(200)
as
begin
set @idstr=','+@idstr+','
select @idstr=replace(@idstr,','+id+',',','+name+',')
from 表B --注意,我是将你表B的id字段设置为字符型,如果是数字型,就要用cast(id as varchar)来进行数据类型转换
return(substring(@idstr,2,len(@idstr)-2))
endgo--调用自定义函数来得到结果
select id,char,dbo.fgetname(char),m,n from 表A
但建议更改表结构,将char分为多个字段,如不确定,分为多条记录