简体   繁体   English

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

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

相关问题 SQL(DQL):WHERE值IN(数组field1)或field2 =值 - SQL (DQL): WHERE value IN (array field1) OR field2 = value SQL的最佳实践JOIN如果Field1 IS为NULL,则为Field2 ELSE Field1 - Best practices for SQL JOIN ON IF Field1 IS NULL then Field2 ELSE Field1 MYSQL仅在field1或field2不等于文本的情况下选择field1,field2 - MYSQL select field1, field2 only where field1 or field2 does not equal text Oracle查询,其中field1 = field2和field2 = field1 - Oracle query where field1=field2 and field2=field1 MS SQL:从[表]中选择field1,field2,其中,当field1 =&#39;value2&#39;时,field2 NOT IN(&#39;val1&#39;,val2&#39;) - MS SQL: SELECT field1, field2 from [table] where field2 NOT IN ('val1', val2') when field1 = 'value2' mysql相关子查询:选择field1,其中max(field2) - mysql correlated subquery : select field1 where max(field2) Mysql在哪里查询…选择* where field1 + field2 + field3 &lt;=字段4 - Mysql where query… select * where field1 +field2 + field3 <= field 4 参数化查询中的(?,?...?)或(@ field1,@ field2 ... @ fieldn)? - (?,?…?) or (@field1,@field2…@fieldn) in parmeterized queries? (MySQL)OrderBy Field1 = 3,Field2 - (MySQL) OrderBy Field1=3, Field2 复制field2时更新field1 - Update field1 when field2 is duplicated
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM