如何解决其中Column1 = case @var = 0,然后为空
我有以下CTE分层查询。
declare @Cat_Fkey int = 0;
WITH CTE AS
(
SELECT tblCategories.ID as RowID,CatEName as RowName
FROM tblCategories
WHERE Cat_Fkey is null
UNION ALL
SELECT t.id,cast(cte.RowName +' '+ t.CatEName as varchar(100))
FROM tblCategories t
INNER JOIN CTE ON t.Cat_Fkey = CTE.RowID
)
我希望在where子句中有一个案例。例如
WHERE Cat_Fkey = case
when @Cat_Fkey = 0 then null
else @Cat_Fkey
end
我知道null为哪里与= null不同,上面的查询只是一个表示。
我希望结果是@cat_fkey = 0时,然后cat_fkey为null。 @cat_fkey 时,则cat_fkey @cat_fkey。
解决方法
使用布尔逻辑:
where
(@cat_fkey = 0 and cat_fkey is null)
or (cat_fkey = @cat_fkey)
,
我使用了Larnu建议的and
/ or
WHERE (@Cat_Fkey = 0 and Cat_Fkey is null) or (Cat_Fkey = @Cat_Fkey)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。