sql问题,替代if-else这个例子?

时间:2010-10-12 05:39:53

标签: sql sql-server-2008

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)

只要@cityIDNULLt.CityID对于该记录也是NULL

IsProvince

只能有一条记录

如果我想执行以下操作,是否可以在不执行if-else子句的情况下进行检查:

1)如果@cityIDNULL,则获取IsProvince1

的记录

2)如果@cityIDNOT NULL,则获取CityID = @cityID

的记录

谢谢,

巫毒

1 个答案:

答案 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标准没有提到它。

这有意义吗?