【问题标题】:using OR in SQL statement [duplicate]在 SQL 语句中使用 OR [重复]
【发布时间】:2019-05-22 16:37:26
【问题描述】:

我的选择语句有问题;基本上,它类似于

SELECT * FROM table WHERE colA LIKE '%test%' OR colA LIKE '%hold%' AND colb > 1

除非我删除 "OR colA LIKE '%hold%'",否则 colB 不会计算。想知道如何使 OR 仅适用于 colA 评估。我意识到我可以将 OR 作为最后一次评估,但想了解如何更好地使用 OR 来处理未来的 sql 语句。

如果我把 OR 放在最后,它确实有效。

SELECT * FROM table WHERE colA LIKE '%test%' OR colA LIKE '%hold%' AND colb > 1

没有错误发生;只是在 OR 语句之后无法评估任何内容,有时在使用通配符时需要使用 OR

【问题讨论】:

  • OR 条件添加括号为SELECT * FROM table WHERE (colA LIKE '%test%' OR colA LIKE '%hold%') AND colb > 1

标签: sql


【解决方案1】:

AND 的优先级高于OR。如所写,条件分解为两个独立的子句:

colA LIKE '%test%'

colA LIKE '%hold%' AND colb > 1

如果匹配这些子句中的任何一个,则将返回一行。

要获得您想要的结果,请使用括号对条件进行分组:

(colA LIKE '%test%' OR colA LIKE '%hold%') AND colb > 1

【讨论】:

    【解决方案2】:

    必须小心使用命令 OR,因为它会破坏所有逻辑。一般应在括号中使用,以配置执行顺序。

    例子:

    我想选择价格超过 100 美元的橙子或苹果:

    SELECT
        *
    FROM fruits
    WHERE (name = 'orange' OR name = 'apple')
    AND value > 100.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-16
      • 2022-10-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      相关资源
      最近更新 更多