使用IN子句的SQL情况,干净的方式?

时间:2012-11-27 10:18:44

标签: sql sql-server arrays case

大家好我试图在条件基础上使用IN子句。我不想要2个单独的SQL语句,并且希望有一个内联解决方案。我想说,如果字符串为空,则不应用IN查询,但如果不是则使用它。我知道我可以做一个IF声明,但我认为这有点气味但不确定另一种做法吗?谷歌搜索显示IN不支持案例关键字......

提前致谢,Onam。

declare @PartStockID nvarchar(50)
set @PartStockID = '32919,40335'

select top 10 * from PMS_PartStock
where 
(@PartStockID != '' AND PartStockID in (SELECT ID FROM dbo.Split_List_Int(@PartStockID)) OR PMS_PartStock.PartStockID = PMS_PartStock.PartStockID )

1 个答案:

答案 0 :(得分:2)

AND更改为OR,将!=更改为=

where 
(@PartStockID = '' OR PartStockID in (SELECT ID FROM dbo.Split_List_Int(@PartStockID)) OR PMS_PartStock.PartStockID = PMS_PartStock.PartStockID )