2017-05-25 290 views
1

我试图比较SQL中数字(整数)是否大于0。当SQL中的数字大于1时返回false

问题是,当数字大于1时,返回的值较小(false)。

我使用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 

回答

3

在这种情况下,正确的语法是使用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; 
1

当使用更强大的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; 
0
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; 
+1

如果答案描述更多关于此查询比OP的原始查询不同的方式这将是有益的。这可能有效,但只有代码的答案才能帮助读者理解。“ – lit

相关问题