1

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

在此先感谢,奥南。

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 )
4

1 回答 1

2

更改ANDOR_ !=_=

where 
(@PartStockID = '' OR PartStockID in (SELECT ID FROM dbo.Split_List_Int(@PartStockID)) OR PMS_PartStock.PartStockID = PMS_PartStock.PartStockID )
于 2012-11-27T10:20:29.427 回答