IN
确定给定的值是否与子查询或列表中的值相匹配。语法
test_expression [ NOT ] IN
    ( 
        subquery
        | expression [ ,...n ] 
    ) 参数
test_expression是任何有效的 Microsoft® SQL Server™ 表达式。subquery是包含某列结果集的子查询。该列必须与 test_expression 有相同的数据类型。expression [,...n]一个表达式列表,用来测试是否匹配。所有的表达式必须和 test_expression 具有相同的类型。结果类型
布尔型结果值
如果 test_expression 与 subquery 返回的任何值相等,或与逗号分隔的列表中的任何 expression 相等,那么结果值就为 TRUE。否则,结果值为 FALSE。使用 NOT IN 对返回值取反。

解决方案 »

  1.   

    直接写:
    declare @id varchar(3)
     declare @range varchar(20)
    set @idrange='(''1'',''0'')'  
    declare cur_id cursor for
    Select  ID From tablewhere fundid in ('1','0'')
      

  2.   


    不行啊,@idrange 是我要从外面传进来的一个参数来的,是一个查询的条件来着
    谢谢!
      

  3.   

    1、首先你@idrange 参数传近来的格式最好是'1,2,3,4,...'这样的。
    2、如果要按照你的写法,需要用动态sql语句实现,其实这里面不需要更简单,可以换种方法,就是使用函数charindex来判断,如下:declare @id varchar(3)
     declare @range varchar(20)
    set @idrange='1,2,3,4'  
    declare cur_id cursor for
    Select  ID From tablewhere where charindex(',' + cast(fundid as varchar) + ',',',' + @fundrange + ',') > 0
    -- 以上的写法,fundid需要是数字类型
      

  4.   

    以下这个问题类似:
    http://expert.csdn.net/Expert/topic/2614/2614441.xml?temp=.8891107
      

  5.   

    仔细回味了一下: gmlxf(烛光)  真高!