其中 Column1 = case @var = 0 然后 null
where Column1 = case @var = 0 then 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)
我按照 Larnu
的建议使用了 and
/or
WHERE (@Cat_Fkey = 0 and Cat_Fkey is null) or (Cat_Fkey = @Cat_Fkey)
我有以下 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)
我按照 Larnu
的建议使用了and
/or
WHERE (@Cat_Fkey = 0 and Cat_Fkey is null) or (Cat_Fkey = @Cat_Fkey)