declare @str char(80)
set @str='''10000008'',''100000129'',''10008700'',''10000503'''
print @str
set @str='select * from test where badge in ('+@str+')'
exec(@str)

解决方案 »

  1.   

    declare @str char(80)
    set @str='''10000008'',''100000129'',''10008700'',''10000503'''
    print @str
    select * from test where charindex(badge,@str)>0
      

  2.   

    再更改一下!declare @str char(80)
    set @str='''10000008'',''100000129'',''10008700'',''10000503'''
    print @str
    select * from test where charindex(''''+badge+'''',@str)>0
      

  3.   

    lw1a2:  你好!你這種方法我試了一下, 總是報錯呢.Server: Msg 170, Level 15, State 1, Line 1
    Line 1: Incorrect syntax near '10000503'.
      

  4.   

    --建立测试环境
    Create Table TEST
    (ID Int,
     badge Varchar(10))
    --插入数据
    Insert TEST Values(1,'10000008')
    Insert TEST Values(2,'10000009')
    Insert TEST Values(3,'10008700')
    --测试
    declare @str char(80)
    set @str='''10000008'',''100000129'',''10008700'',''10000503'''
    --print @str
    --方法一
    exec('SELECT * from test Where badge in ('+@str+') ')
    --方法二
    select * from TEST where ','+@str+','  Like '%,'''+badge+''',%'
    --方法三
    Select * from TEST Where CharIndex(','''+ badge+''',',','+@str+',') >0
    --删除测试环境
    Drop Table TEST
    --结果
    /*
    ID badge
    1 10000008
    3 10008700
    */
      

  5.   

    samfeng_2003
    我試過了, 執行成功,謝謝了!
      

  6.   

    paoluo
    方法二好有創意啊.但是,方法一有個問題:
    為什麼把查詢語句直接寫在exec()裏面就執行成功, 
    像lwla2寫的那樣,賦給一個變量就老是不行呢?
     
      

  7.   

    方法一有個問題還想請各位解答:為什麼把查詢語句直接寫在exec()裏面就執行成功, 
    像lwla2寫的那樣,賦給一個變量就老是不行呢?謝謝
      

  8.   

    用法请参考SQL联机丛书的:动态SQL的用法
    看了你就知道了
      

  9.   

    不是赋给变量不行,是他写的有问题。declare @str Varchar(1000) --类型的设置有问题,另外长度最好设长一点
    set @str='''10000008'',''100000129'',''10008700'',''10000503'''
    --print @str
    set @str='select * from test where badge in ('+@str+')'
    exec(@str)
    --结果
    /*
    ID badge
    1 10000008
    3 10008700
    */
      

  10.   

    改一下第一句就行了
    declare @str char(300)
      

  11.   

    改一下第一句就行了
    declare @str varchar(300)
      

  12.   

    原來如此啊!謝謝你, paoluo