我从一个名为[tagged]的列中选择记录,并且默认为零
我的问题是当@tagged
变量为NULL
时,我想要同时选择0,1值。这让我觉得我应该做IF/ELSE
,但我的尝试失败了。
---简单的例子:
declare @tagged int = NULL
SELECT *
FROM [TableName]
WHERE datecreated > '2016-01-01'
AND tagged = @tagged
许多DBA都在推荐CASE子句。 但我知道在哪里添加它需要帮助。
我是否在查询中添加它?
我的微弱尝试是这样的:
SELECT *
FROM [TableName]
WHERE datecreated > '2016-01-01'
AND (
CASE @tagged
WHEN 0 THEN (tagged = 0)
WHEN 1 THEN (tagged = 1)
ELSE (tagged IN(0,1)
END
)
答案 0 :(得分:3)
使用OR
条件而不是粗略CASE
语句。
SELECT *
FROM [TableName]
WHERE datecreated > '2016-01-01'
AND ( tagged = @tagged
OR @tagged IS NULL )
如果您希望使用CASE
解决问题,那么(考虑NULL
列中没有tagged
个值)
WHERE datecreated > '2016-01-01'
AND tagged = CASE
WHEN @tagged IS NOT NULL THEN @tagged
ELSE tagged
END