sql - 其中 Column1 = case @var = 0 然后为 null
问题描述
我有以下 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
我知道where is null 和= null 不一样,上面的查询只是一个表示。
我希望结果是@cat_fkey = 0,然后 cat_fkey 为空。当@cat_fkey <> 时,cat_fkey @cat_fkey 在哪里。
解决方案
使用布尔逻辑:
where
(@cat_fkey = 0 and cat_fkey is null)
or (cat_fkey = @cat_fkey)
推荐阅读
- zend-framework - 使用 RowGateway 创建行
- android - 如何在android中找到谷歌浏览器的绝对路径
- javascript - Vue.js:在脚本中设置评估/v-bound 属性
- javascript - 将强度点数组转换为标记
- c# - FindObjectOfType 问题
- email - wso2 发送电子邮件 MIME 编码字头“来自”
- android - 如何不在列表视图中显示某些项目
- asp.net - Itextsharp:使用按钮填充图像
- xamarin - 当我删除元素时,layout.children.clear() 和 layout.children.remove() 之间有区别吗?
- php - 当我插入值时,只存储最后一个值