主要是想把它轉換成字符串declare @process varchar(100)
set @process = '1,2,5,6'
select * from testdb where CHARINDEX(',',cast(process as varchar)+','+@process+'') > 0
set @process = '1,2,5,6'
select * from testdb where CHARINDEX(',',cast(process as varchar)+','+@process+'') > 0
set @s='asdfqete,gb,gr,f,'
select CHARINDEX(',',@s)
--函數CHARINDEX的作用是從字符串@s中找出第一個','出現的位置,如果沒有則返回0
CHARINDEX(','+cast(process as varchar)+',' , ','+@process+'') > 0
-------------------------------- ---------------
返回字符串中指定表达式的起始位置。 语法
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
CHARINDEX(
(','+cast(process as varchar)+','),
(','+@process+'')
) > 0
CHARINDEX ( expression1 , expression2 [ , start_location ] )
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 行)
--*/
我晕
CHARINDEX(','+cast(process as varchar)+',' , ','+@process+'') > 0
-------------------------------- ---------------
上面是对的