none
求助啊! RRS feed

  • 问题

  • 求助啊:
    create table #AA (id int identity,name varchar(50))
    create table #BB (id int identity,AAs varchar(500))
    insert into #AA
    select 'A' union all
    select 'B' union all
    select 'C' union all
    select 'D'
    insert into #BB
    select '1,2,4'
    --怎么根据1,2,4查询出A,B,D
    select AAs from #BB

    drop table #AA
    drop table #BB

    结果为字符串:A,B,D

    或者表也行

    2011年2月12日 8:23

答案

  • if OBJECT_ID('fn_split') is not null
    	drop function fn_split
    go
    -- 字符串分隔
    create function fn_split
    (
    	@Value  varchar(2000),
    	@Separator  varchar(20)
    ) 
    returns @ReturnTable table(col varchar(100)) 
    as 
     begin 
      while(charindex(@Separator,@Value) <> 0) begin 
        insert @ReturnTable(col) values (substring(@Value, 1, charindex(@Separator, @Value) - 1)) 
        set @Value = stuff(@Value, 1, charindex(@Separator, @Value), '') 
      end 
      insert @ReturnTable(col) values (@Value) 
      return 
     end 
    go 
    
    
    declare @A table (id int identity,name varchar(50))
    insert into @A
    select'A' union all
    select 'B' union all
    select 'C' union all
    select 'D' 
    
    -- 行到表格
    select A.* from @A a inner join dbo.fn_split('1,2,4', ',') b on a.id = b.col
    
    declare @returnValue varchar(8000)
    set @returnValue = ''
    
    -- 得到字符串 A,B,D
    select @returnValue = @returnValue + (case when @returnValue = '' then a.name else ',' + a.name end)  from @A a inner join dbo.fn_split('1,2,4', ',') b on a.id = b.col
    select @returnValue
    
    
    

    知识改变命运,奋斗成就人生!
    • 已标记为答案 HUGO.CM 2011年2月14日 7:23
    2011年2月14日 2:32
    版主