[英]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.