代码之家  ›  专栏  ›  技术社区  ›  Jaa Zaib

返回空值的大小写表达式

  •  -1
  • Jaa Zaib  · 技术社区  · 7 年前

    我正在尝试使用大小写表达式获取我的票证的状态。它工作得很好,但没有恢复 Not Available 。而不是返回一个状态为null的值作为结果。

    此查询有什么问题?

    第二,我是否可以在返回操作时进一步说明?

    Select 
    Case 
          When Status=1 and isTaken=1 then 'Open'
          When Status=4 and isTaken=0 then 'Expire'
          When Status=2 and isTaken=0 then 'Pending'
          When Status=0 and isTaken=0 then 'Close'
    
    Else 'Not Available' End As 'Status' 
    from Tickets 
    Where Id='1234567890'
    

    查看图像以了解更多说明。

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  2
  •   EzLo tumao kaixin    7 年前

    您的查询未返回 NULL ,返回0行。你的 WHERE 正在筛选行或表为空。

    删除 哪里 看看它是否返回行,看看表是否为空。如果是,请确保 ID 过滤器正确。

    如果您想返回一行,即使筛选器没有找到任何内容,那么您需要 NOT EXISTS 或a LEFT JOIN :

    DECLARE @ID VARCHAR(20) = '1234567890'
    
    SELECT
        F.ID,
        Case 
            When Status=1 and isTaken=1 then 'Open'
            When Status=4 and isTaken=0 then 'Expire'
            When Status=2 and isTaken=0 then 'Pending'
            When Status=0 and isTaken=0 then 'Close'
        Else 'Not Available' End As 'Status' 
    FROM
        (VALUES (@ID)) AS F(ID)
        LEFT JOIN Tickets AS C ON F.ID = C.Id