首页 > 解决方案 > 在 SQL 语句中使用 OR

问题描述

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

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

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

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

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

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

标签: sql

解决方案


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

colA LIKE '%test%'

colA LIKE '%hold%' AND colb > 1

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

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

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

推荐阅读