declare @ctring varchar(8000)
set @ctring = '1,2,3,4,5,6,7'  /* 实际应用中,这里的 @ctring 是参数传递过来的,所以并非固定的这些ID号 */
if exists(select * from book where id in (@ctring) and 类别 = '英语')
begin
-- 这里有很多语句要执行
end
else
begin
-- 这里有很多语句要执行
end
上面的:
if exists(select * from book where id in (@ctring) and 类别 = '英语')
总是提示语法错误,麻烦帮我改改好吗谢谢!!

解决方案 »

  1.   

    if exists(EXEC('select * from book where id in ('+@ctring+') and 类别 = ''英语''') 
      

  2.   

    if exists(EXEC('select * from book where id in ('+@ctring+') and 类别 = ''英语''') )
      

  3.   

    --trywhere 
    charindex(','+rtrim(id)+',' ,','+@ctring+',' )>0
    and 类别 = '英语'
      

  4.   

    --trywhere charindex(','+rtrim(id)+',' , ','+@ctring+',')>0
    and  类别 = '英语'
      

  5.   

    还是提示语法错误啊:在关键字 'EXEC' 附近有语法错误。
      

  6.   

    declare @ctring varchar(8000) 
    set @ctring = '1,2,3,4,5,6,7'  /* 实际应用中,这里的 @ctring 是参数传递过来的,所以并非固定的这些ID号 */ 
    if exists(select * from sysobjects where charindex(convert(varchar(10),id),@ctring) > 0 ) 
    begin 
    print '1'
    end 
    else 
    begin 
    print '2'
    end 
    给你一个例子
      

  7.   

    如果你非要用IN的话,就把你下面的BEGIN END快,全部放到动态SQL里去执行。
      

  8.   


    如果 @ctring是 = '11,12,13,14,15,16,17'  
    那么exists()得到的结果并非是期望的结果,可以这样来测试:
    declare @ctring varchar(8000) 
    set @ctring = '11,12,13,14,15,16,17'
    select * from sysobjects where charindex(convert(varchar(10),id),@ctring) > 0 order by id请查看显示结果,会出现ID为1和11的都会出来,晕哦,请问怎么办???
      

  9.   


    declare @ctring varchar(8000) 
    set @ctring = '1,2,3,4,5,6,7'  /* 实际应用中,这里的 @ctring 是参数传递过来的,所以并非固定的这些ID号 */ 
    declare @sql varchar(8000)
    set @sql='if exists(select 1 from book where id in ('+@ctring+') and 类别 = ''英语'')' 
    set @sql= @sql + '
    begin 
    print 1
    end 
    else 
    begin 
    print 2
    end 
    '
    --print @sql
    exec(@sql)
    另建议:写 exists的时候,不要写if exists (select * ...) 
    写成 if exists (select color=#00FF00]*[/color] ...) 
      

  10.   

    另建议:写 exists的时候,不要写if exists (select * ...) 
    写成 if exists (select color=[#00FF00]*[/color] ...) 
      

  11.   

    if exists (select 1 ...)