我有一个表里一个字段为:op_sort类型为varchar型,值为'00101','00102','00103',如下我可以查询出:select op_sort from check where id=1
执行后得到:op_sort 
'00101','00102','00103'在执行另一语句为:
select name,code from sort_type
得到结果为:
name      code
水         00101
油         00102
盐         00103与是我想这二个表结合得到一条记录的结果(就是显示第一个结果的编码的名称):
sort_name
'水','油','盐'
这种语句怎么写啊?请教大家!谢谢!

解决方案 »

  1.   

    create function f(@op_sort varchar(8000))
    returns varchar(8000)
    as
    begin
    declare @str varchar(8000)

    select @str=''
    select @str=@str+','+name from sort_type where charindex(','+code+',',','+@op_sort+',')>0
    select @str=stuff(@str,1,1,'')
    return @str
    end
    go
    select dbo.f(op_sort) from check   where   id=1 
      

  2.   

    ---例子
    create table [check](id int,op_sort varchar(1000))
    insert [check]
    select 1,'''00101'',''00102'',''00103'''
    go
    create table sort_type (name   varchar(10),          code varchar(10))
    insert sort_type
    select '水','00101' 
    union select '油','00102' 
    union select '盐','00103' 
    gocreate function f(@op_sort varchar(8000))
    returns varchar(8000)
    as
    begin
    declare @str varchar(8000)

    select @str=''
    select @str=@str+','+name from sort_type where charindex(','''+code+''',',','+@op_sort+',')>0
    select @str=stuff(@str,1,1,'')
    return @str
    end
    go
    select dbo.f(op_sort) from [check]   where   id=1 drop table [check],sort_type
    drop function f