@employeetype varchar(10)
SET @employeetype = '1,3,4'SELECT * 
FROM AAA 
WHERE Employee IN ( @employeetype )Employee这个字段是smallint型的,想让这句话执行成功,该怎么写呢?从 varchar 値 '1,3,4' 不能往 smallint类型转换另外如果Employee这个字段是tinyint型的,又该怎么写呢?

解决方案 »

  1.   

    exec('SELECT *  
    FROM AAA  
    WHERE Employee IN ( '+@employeetype+' )')
      

  2.   

    试试这样
    SELECT *  
    FROM AAA  
    WHERE charindex(','+rtrim(Employee)+',', ','+ @employeetype +',')>0
      

  3.   

    declare @employeetype varchar(10),@sql nvarchar(100)
    SET @employeetype = '1,3,4'
    SET @sql = N'SELECT * FROM AAA WHERE Employee IN (' + @employeetype + N' )'
    exec sp_executesql @sql
      

  4.   

    @employeetype varchar(10)
    SET @employeetype = '1,3,4'SELECT *  
    FROM AAA  
    WHERE charindex(cast(Employee as varchar(20)),@employeetype) > 0
      

  5.   

    SELECT *  
    FROM AAA  
    WHERE cast(Employee as varchar) IN '(' + @employeetype + ')'