我的选择语句有问题;基本上,它就像
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
答案 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.