select * from [Table] where charindex(','+tiaojian+',',','+@para+',')>0
传递参数进入不要用单引号了改为:@para=001,002
DECLARE @cmd NVARCHAR(MAX) SET @cmd=' SELECT * FROM table WHERE BillNo IN ('+@para+')';EXEC(@cmd)
希望楼主使用的是2005及更高的版本,参数用逗号隔开就行了: declare @para nvarchar(max) = '1,2,3' declare @x xml = '<id>' + REPLACE(@para,',','</id><id>') + '</id>' select * from Table where tiaojian in ( select CONVERT(int,Convert(varchar(max),T.d.query('text()'))) as value from @x.nodes('/*') as T(D) )
DECLARE @sql varchar(MAX) @para='001','002' SET @sql=' SELECT * FROM table WHERE BillNo IN ('+@para+')'; EXEC(@cmd)
declare @para varchar(50),@sql varchar(8000)set @para='''001'',''002'''set @sql='select * from Table where tiaojian in ('+@para+')'exec(@sql)
用动态SQL实现,declare @para varchar(50)select @para='''001'',''002'''exec('select * from Table where tiaojian in ('+@para+')')
用动态SQl,可以采用楼上方法, declare @para varchar(50) select @para='''001'',''002''' exec('select * from Table where tiaojian in ('+@para+')') 如果完全用变量,可以采用表变量declare @para table( tiaojian varchar(20)) insert into @para values('1') select * from table where tiaojian in (select tiaojian from @para)
DECLARE @cmd NVARCHAR(MAX)
SET @cmd='
SELECT *
FROM table
WHERE BillNo IN ('+@para+')';EXEC(@cmd)
declare @para nvarchar(max) = '1,2,3'
declare @x xml = '<id>' + REPLACE(@para,',','</id><id>') + '</id>'
select * from Table where tiaojian in (
select CONVERT(int,Convert(varchar(max),T.d.query('text()'))) as value from @x.nodes('/*') as T(D)
)
@para='001','002'
SET @sql='
SELECT *
FROM table
WHERE BillNo IN ('+@para+')';
EXEC(@cmd)
declare @para varchar(50),@sql varchar(8000)set @para='''001'',''002'''set @sql='select * from Table where tiaojian in ('+@para+')'exec(@sql)
declare @para varchar(50)
select @para='''001'',''002'''
exec('select * from Table where tiaojian in ('+@para+')')
如果完全用变量,可以采用表变量declare @para table( tiaojian varchar(20))
insert into @para values('1')
select * from table where tiaojian in (select tiaojian from @para)