DECLARE @cityID bigint;
set @cityID = NULL
--set @cityID = 3
SELECT ID,
Name,
CityID,
IsProvince
FROM TABLE t
WHERE ISNULL(t.CityID, -1) = ISNULL(@cityID, -1)
只要@cityID
为NULL
,t.CityID
对于该记录也是NULL
。
IsProvince
如果我想执行以下操作,是否可以在不执行if-else
子句的情况下进行检查:
1)如果@cityID
为NULL
,则获取IsProvince
为1
2)如果@cityID
为NOT NULL
,则获取CityID = @cityID
谢谢,
巫毒
答案 0 :(得分:1)
您可以在WHERE中执行此操作:
DECLARE @cityID bigint;
set @cityID = NULL
--set @cityID = 3
SELECT ID,
Name,
CityID,
IsProvince
FROM TABLE t
WHERE (@cityID IS NULL AND t.CityID IS NULL AND IsProvince = 1)
OR (t.CityID = @cityID)
这应该有效,因为任何东西= NULL总是返回false。第一个子句应该解决你的#1,第二个子句解决#2。我不确定你是否真的需要t.CityID IS NULL
条款,因为你的#1标准没有提到它。
这有意义吗?