日期:2014-05-19  浏览次数:20407 次

从表中选择时,条件可变化,高手都来看看,谢谢了
表a
ID         NAME
1               XX
2               XX1
3               XX2
4               XX3
在存储过程中,传递参数为ID或ID串和一个标识Flag
IF(Flag   =   0)                     --表明传递的是一个ID,     比如ID为     1
IF(Flag   =   1)                     --表明传递的是一个ID串,比如ID串   为:   1,2,3
请问我该如何根据ID来查询?

------解决方案--------------------
IF(Flag = 0) --表明传递的是一个ID, 比如ID为 1
--这种情况好办

IF(Flag = 1) --表明传递的是一个ID串,比如ID串 为: 1,2,3
--这种情况你可以先把1,2,3放到一个表变量里:@t(id)
1
2
3

然后则可查询, select * from YourTable where ID in(select id from @t)
------解决方案--------------------
declare @a table(ID int, CarID varchar(10), CarNo varchar(10))
insert @a select 1 , '001 ', 'AAAAAA '
union all select 2, '002 ', 'BBBBBB '
union all select 3, '003 ', 'CCCCCC '

declare @s varchar(10)
set @s= '1,3 '
select * from @a where charindex( ', '+ltrim(id)+ ', ', ', '+@s+ ', ')> 0