簡體   English   中英

SQL WHERE Field1> = 1或Field2> = 1允許(空)值

[英]SQL WHERE Field1 >= 1 OR Field2 >= 1 Allowing (null) Values

我正在嘗試查詢數據庫表,並在查詢中包含以下WHERE子句:

WHERE (QTY_ON_HAND >= 1 OR QTY_ON_ORDER >= 1);

我想返回所有現有數量或已訂購數量的結果。

但是,這允許返回具有0 QTY_ON_HAND(null) QTY_ON_ORDER

滾動結果,甚至允許-1 (和其他負數)和NULL

在此處輸入圖片說明

以下是WHERE子句的其余部分:

    WHERE CHARGE_CODE = 'RETAIL' OR CHARGE_CODE = 'RETAILSN' AND
      LOCATION = 100 AND
      SPA_ITEM_ID LIKE '1%' AND
      (QTY_ON_HAND >= 1 OR QTY_ON_ORDER >= 1);

解:

忘記了第一個WHERE子句的括號

CHARGE_CODE = 'RETAIL' OR CHARGE_CODE = 'RETAILSN'

需要是

(CHARGE_CODE = 'RETAIL' OR CHARGE_CODE = 'RETAILSN')

AND運算符優先於OR ,因此您需要使用括號:

WHERE 
   ( CHARGE_CODE = 'RETAIL' OR CHARGE_CODE = 'RETAILSN' )
   AND LOCATION = 100
   AND SPA_ITEM_ID LIKE '1%'
   AND ( QTY_ON_HAND >= 1 OR QTY_ON_ORDER >= 1 )

更好的使用IN運算符:

WHERE 
   CHARGE_CODE IN( 'RETAIL', 'RETAILSN' )
   AND LOCATION = 100
   AND SPA_ITEM_ID LIKE '1%'
   AND ( QTY_ON_HAND >= 1 OR QTY_ON_ORDER >= 1 )

有關此問題的更多信息,請參見文檔

嘗試:

WHERE
    CHARGE_CODE IN ('RETAIL','RETAILSN') AND
    LOCATION = 100 AND
    SPA_ITEM_ID LIKE '1%' AND
    (QTY_ON_HAND >= 1 OR QTY_ON_ORDER >= 1);

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM