在SQL语句中使用OR

时间:2019-05-22 16:37:27

标签: sql

我的选择语句有问题;基本上,它就像

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

2 个答案:

答案 0 :(得分:0)

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

colA LIKE '%test%'

colA LIKE '%hold%' AND colb > 1

如果行与这些子句之一匹配,则将返回该行。

要获得所需结果,请使用括号将条件分组:

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

答案 1 :(得分:0)

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

示例:

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

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