create table #TableTemp (ColTemp varchar(80))
insert #TableTemp values('123456789ABCDEFGHIGK')
declare @TempValue varchar(80)
declare @sql varchar(8000)set @TempValue='1234,0000,ADCF'
select @sql=replace(@TempValue,',','%'' union select * from #TableTemp where ColTemp like ''%')
exec('select * from #TableTemp where ColTemp like ''%'+ @sql+'%''')set @TempValue='ABCD,8888,9999'
select @sql=replace(@TempValue,',','%'' union select * from #TableTemp where ColTemp like ''%')
exec('select * from #TableTemp where ColTemp like ''%'+ @sql+'%''')set @TempValue='7777,HIGK,ASDF'
select @sql=replace(@TempValue,',','%'' union select * from #TableTemp where ColTemp like ''%')
exec('select * from #TableTemp where ColTemp like ''%'+ @sql+'%''')--结果
ColTemp                                                                          
-------------------------------------------------------------------------------- 
123456789ABCDEFGHIGKColTemp                                                                          
-------------------------------------------------------------------------------- 
123456789ABCDEFGHIGKColTemp                                                                          
-------------------------------------------------------------------------------- 
123456789ABCDEFGHIGK

解决方案 »

  1.   

    海兄,他的 因为可能变量内存在多组,有可能是多达上百组的数值.
    union all方式可以实现,估计效果不太好,
    不知道有没有更好的方式.
      

  2.   

    declare @TempValue varchar(8000)
    set @TempValue='1234,0000,ADCF'
    set  @TempValue='select col='''+replace(@TempValue,',',''' union all select ''')+''''
    declare @str varchar(8000)
    set @str='select coltemp from tabletemp a inner join ('+@TempValue+') b on charindex(col,coltemp)>0'
    exec(@str)
      

  3.   

    declare @TempValue varchar(8000)
    set @TempValue='1234,0000,ADCF'
    set  @TempValue='select col='''+replace(@TempValue,',',''' union all select ''')+''''
    declare @str varchar(8000)
    set @str='select coltemp from tabletemp a where exists (select 1 from ('+@TempValue+') b where charindex(col,a.coltemp)>0)'
    exec(@str)
    coltemp
    ------------------------------
    123456789ABCDEFGHIGK(1 行受影响)
      

  4.   

    联合或者是拼接SQL肯定是不行的。效率会有问题。我记得好象有一个这样的函数,可怎么找就找不到。郁闷。