2017-05-25 287 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

相關問題