【问题标题】:Returning false when number is > 1 in SQL在 SQL 中当 number 大于 1 时返回 false
【发布时间】:2017-05-25 17:31:50
【问题描述】:

我正在尝试比较 SQL 中的数字(整数)是否大于 0。

问题是当数字大于 1 时它返回更少(假)。

我正在使用W3schools database 来测试我的查询。我有以下查询:

SELECT 
   OD.OrderID as OrderID, 
   OD.ShipperID, 
   (SELECT CASE OD.ShipperID 
         WHEN OD.ShipperID > 0 Then 'greater' 
         ELSE 'less' END) as Result 
   FROM Orders OD;

当 ShipperID 为以下时:

1 = greater
2 = less
3 = less

【问题讨论】:

    标签: sql select case


    【解决方案1】:

    在这种情况下,正确的语法是使用CASE WHEN 而不是CASE <value> WHEN。也不需要包装的 SELECT。

    SELECT OD.OrderID as OrderID
        , OD.ShipperID
        , CASE WHEN OD.ShipperID > 0 Then 'greater' ELSE 'less' END as Result 
    FROM Orders OD;
    

    【讨论】:

      【解决方案2】:

      当使用更健壮的case 语法时,casewhen 子句之间不应有表达式。内部的select 也是多余的:

      SELECT OD.OrderID as OrderID, 
             OD.ShipperID, 
             CASE WHEN OD.ShipperID > 0 THEN 'greater' ELSE 'less' END AS Result 
      FROM   Orders OD;
      

      【讨论】:

        【解决方案3】:
        SELECT OD.OrderID as OrderID
             , OD.ShipperID
             , CASE WHEN OD.ShipperID > 0 THEN 'greater' 
                    WHEN OD.ShipperID < 0 THEN 'less'
                    ELSE 'same' END as Result
        FROM Orders OD;
        

        【讨论】:

        • 如果答案更多地描述了此查询与 OP 的原始查询不同的方式,那将会很有帮助。这可能有效,但仅代码的答案对帮助读者理解的作用不大。'
        猜你喜欢
        • 2022-01-14
        • 1970-01-01
        • 2018-04-18
        • 1970-01-01
        • 1970-01-01
        • 2014-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多