可以用其他方法,一个SQL好像出不来。

解决方案 »

  1.   

    select * from 表A a left join 表B b on charindex(','+cast(b.id as varchar)+',' , ','+a.char+',')
      

  2.   

    --创建一个自定义函数,用来完成替换工作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
      

  3.   

    这个语句与其从数据库来实现还不如从前端来实现快一点建议考虑其他方式,个人不推荐从sql语句实现
      

  4.   

    同意zjcxc(邹建) 
    但建议更改表结构,将char分为多个字段,如不确定,分为多条记录
      

  5.   

    还是不行,运行zjcxc(邹建)写的自定义函数的时候总是报错:“错误170,第一行“function”附近有语法错误;必须声明变量@idstr”