“1,2整体”不是什么类型,仅仅是个一个表达式列表。以下是SQL帮助所述:
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.   

    可以定义成varchar类型作为参数传递,拼接成sql语句后用exec(...)或sp_executesql来执行
      

  2.   

    1,2如果一定要说是什么类型,那只对于1,2来说是VARCHAR类型.
      

  3.   

    可以用类似下面的函数进行处理:create function f_select(@value varchar(8000))
    returns table
    as
    return(select  * from 表 where charindex(','+cast(字段名 as varchar)+',',','+@value+',')>0)
    go--调用函数查询
    select * from dbo.f_select('1,2')