比如,我的一条查询语句,select * from test where '1' in SetID 这个SetID是一个字符串,存的是'1,2,3,4,5'等这样的字符,可是in不支持这样,in需要后面接一个('1,2,3,4,5')这样的,而不是字符串,怎么处理下?求帮忙啊!

解决方案 »

  1.   

    ',1,' like '%,'+',1,2,3,4,5,'+',%'
      

  2.   


    declare @t varchar(1000)='1,2,3,4,5';;with tb as
    (
    select SetID=CAST(SUBSTRING(@t,1,CHARINDEX(',',@t,1))AS varchar(8000))
    ,SetID_split=CAST( stuff(@t+',',1,CHARINDEX(',',@t+','),'') AS varchar(8000))
    union all
    select SetID=CAST( SUBSTRING(SetID_split,1,CHARINDEX(',',SetID_split,1))AS varchar(8000))
    ,SetID_split=CAST( stuff(SetID_split,1,CHARINDEX(',',SetID_split+','),'') AS varchar(8000))
    from tb
    where SetID_split>''
    )
    select replace(SetID,',','') SetID 
    into #tb
    from tbselect * 
    from test 
    where SetID in (select SetID from #tb)
      

  3.   

    select * from test where find_in_set(1 ,SetID)