代码之家  ›  专栏  ›  技术社区  ›  VoodooChild

SQL问题,本例中是否为if else?

  •  0
  • VoodooChild  · 技术社区  · 14 年前
    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 也是 无效的 为了那个记录。

    只有一条记录是真的 IsProvince

    有没有不做检查的方法 if-else 如果我要执行以下操作:

    1)如果 @ CITYID 无效的 ,然后获取记录 省域 1

    2)如果 @ CITYID NOT NULL 那就拿张唱片 CityID = @cityID

    谢谢,

    巫毒

    1 回复  |  直到 14 年前
        1
  •  1
  •   davisoa    14 年前

    您可以在以下位置执行此操作:

    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)
    

    这应该有效,因为anything=null总是返回false。第一个子句应该解出1,第二个子句解出2。我不确定你是否真的需要 t.CityID IS NULL 尽管如此,因为你对1的标准没有提到它。

    这有道理吗?