大家好我试图在条件基础上使用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 )
答案 0 :(得分:2)
将AND
更改为OR
,将!=
更改为=
where
(@PartStockID = '' OR PartStockID in (SELECT ID FROM dbo.Split_List_Int(@PartStockID)) OR PMS_PartStock.PartStockID = PMS_PartStock.PartStockID )