如下: 
有表TableTemp 包含列 ColTemp,内有一行数据,为'123456789ABCDEFGHIGK' 有变量@TempValue 
可能等于'1234,0000,ADCF' 
也可能等于'ABCD,8888,9999' 
又可能等于'7777,HIGK,ASDF' 
变量结构如此,但不一定是三组,有可能是多组。 问题: 在变量中的值,任意一组包含在行数据内,即可满足条件,我该如何实现检索呢?如何去写SQL呢? 因为可能变量内存在多组,有可能是多达上百组的数值,所以不建议用Link, 小弟初学,请大家帮忙。

解决方案 »

  1.   

    一定要用变量吗.
    如果不用变量的话,倒是可以拆分查询的字符串,逐个用like查询.关注下~~
      

  2.   

    如果大量使用Link 或者大量使用 Join,如果变量组过长会被SQL Server拒绝执行。 
      

  3.   


    declare @TempValue  varchar(1000)
    set @TempValue='ABCD,8888,9999'
    declare @s varchar(max)
    set @s='select * from TableTemp  where colTemp like ''%'+replace(@TempValue,',','%'' or colTemp like ''%')+'%'''
    print @s
    --select * from TableTemp  where colTemp like '%ABCD%' or colTemp like '%8888%' or colTemp like '%9999%'
    效率会很低, 不过也没什么好办法
      

  4.   

    效率低固然是一个,如果KEY值扩充,就有可能出现拒绝执行啊。
      

  5.   

    你用的是SQL2005吗? varchar(max)可以超过8000个字符.