SQL,存储过程中,if判断怎么写?    有一个“参数A”,如果“A”为“3,4,5,6,7,8,9,10”中的任意一个则执行查询“Q1”。如果“A”为“1,2,11,12”中的
任意一个则执行查询“Q2”。谢谢喽。

解决方案 »

  1.   

    if (select charindex(A,'3,4,5,6,7,8,9,10'))>0
    begin

    end
    if (select charindex(A,'1,2,11,12')>0)
    begin 

    end
      

  2.   


    if charindex(',' + cast(参数A as varchar) + ',' , ',' + '3,4,5,6,7,8,9,10' + ',') > 0
       执行查询Q1
    if charindex(',' + cast(参数A as varchar) + ',' , ',' + '1,2,11,12'+ ',') > 0
       执行查询Q2注意,建议在前后加上逗号,以免误判断.
      

  3.   

    declare @A intset @A=1
    if ',3,4,5,6,7,8,9,10,' LIKE '%,' + RTRIM(@A) + ',%' 
       执行查询Q1
    else if ',3,4,5,6,7,8,9,10,' LIKE '%,' + RTRIM(@A) + ',%' 
       执行查询Q2
      

  4.   

    注意用else if,不然会判断两次
    declare @A int
    set @A=1if ',3,4,5,6,7,8,9,10,' LIKE '%,' + RTRIM(@A) + ',%'  
      执行查询Q1
    else if  ',1,2,11,12,' LIKE '%,' + RTRIM(@A) + ',%'  
      执行查询Q2
      

  5.   

    判断也可用in不用else if 时,可用return