主要是想把它轉換成字符串declare @process varchar(100)
set @process = '1,2,5,6'
select * from testdb where CHARINDEX(',',cast(process as varchar)+','+@process+'') > 0

解决方案 »

  1.   

    declare @s varchar(100)
    set @s='asdfqete,gb,gr,f,'
    select CHARINDEX(',',@s)   
    --函數CHARINDEX的作用是從字符串@s中找出第一個','出現的位置,如果沒有則返回0
      

  2.   

    select * from testdb where 
    CHARINDEX(','+cast(process as varchar)+','   ,   ','+@process+'') > 0
              --------------------------------       ---------------
      

  3.   

    CHARINDEX
    返回字符串中指定表达式的起始位置。 语法
    CHARINDEX ( expression1 , expression2 [ , start_location ] ) 参数
    expression1一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。expression2一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。start_location在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。set @process = '1,2,5,6'
    select * from testdb where CHARINDEX(','+cast(process as varchar)+','      ,       ','+@process+'') > 0这里','+cast(process as varchar)+','  是第一个参数expression1,而','+@process+''则是第二个参数expression2
      

  4.   

    字符串相连而已
    CHARINDEX(
             (','+cast(process as varchar)+','),
             (','+@process+'')
              ) > 0
    CHARINDEX ( expression1 , expression2 [ , start_location ] )
      

  5.   

    --示例数据
    declare @t table(a int)
    insert @t select 1
    union all select 2
    union all select 22
    union all select 12--查询
    declare @s varchar(10)
    set @s='12,22,3'select * from @t where charindex(cast(a as varchar),@s)>0/*--测试结果a           
    ----------- 
    1
    2
    22
    12(所影响的行数为 4 行)
    --*/
      

  6.   

    汗~~其实就是匹配set @process = '1,2,5,6'里面的,
    我晕
      

  7.   

    select * from testdb where 
    CHARINDEX(','+cast(process as varchar)+','   ,   ','+@process+'') > 0
              --------------------------------       ---------------
    上面是对的