[英]SQL WHERE Field1 >= 1 OR Field2 >= 1 Allowing (null) Values
I'm trying to query a database table and have the following WHERE clause on my query: 我正在尝试查询数据库表,并在查询中包含以下WHERE子句:
WHERE (QTY_ON_HAND >= 1 OR QTY_ON_ORDER >= 1);
I am wanting to return all results who have either quantity on hand OR quantity on order. 我想返回所有现有数量或已订购数量的结果。
However, this is allowing records to return that have 0 QTY_ON_HAND
and (null) QTY_ON_ORDER
. 但是,这允许返回具有
0 QTY_ON_HAND
和(null) QTY_ON_ORDER
。
Scrolling throug the results, it's even allowing -1
(And other negatives) and NULL
. 滚动结果,甚至允许
-1
(和其他负数)和NULL
。
Here is the rest of the WHERE clauses: 以下是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);
Solution: 解:
Forgot the parenthesis on the first WHERE clause 忘记了第一个WHERE子句的括号
CHARGE_CODE = 'RETAIL' OR CHARGE_CODE = 'RETAILSN'
needs to be 需要是
(CHARGE_CODE = 'RETAIL' OR CHARGE_CODE = 'RETAILSN')
AND
operator has precedence over OR
, so you need to use parentheses: 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 )
Better yet using the IN
operator: 更好的使用
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 )
More on the matter explained in documentation . 有关此问题的更多信息,请参见文档 。
Try: 尝试:
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);
Hope It Helps! 希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.