sql - 在 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
解决方案
AND
的优先级高于OR
。如所写,条件分解为两个独立的子句:
colA LIKE '%test%'
和
colA LIKE '%hold%' AND colb > 1
如果匹配这些子句中的任何一个,则将返回一行。
要获得您想要的结果,请使用括号对条件进行分组:
(colA LIKE '%test%' OR colA LIKE '%hold%') AND colb > 1
推荐阅读
- systemd - systemd : 两个服务一起运行
- c++ - 为什么这 2 个 cout 语句给出相反的结果?
- amazon-web-services - AWS 托管的超级账本结构 v1.4.7 区块链 - 连接到结构网络时出现证书错误错误
- angular - 有没有办法使用 ngx-translate 翻译 css 选择器(::after, ::before) 内容?
- python - 如何为极坐标图中的饼图分配预定义的长度?
- swift - Music NowPlaying 在 SwiftUI 中的 TabView 上方
- json - 什么解决了预期的 BEGIN_OBJECT 但在第 1 行第 1 列路径 $
- kubernetes - 限制 Kubernetes/AKS 中的优先级消耗
- .net - Graphql - 过滤对象为空或不存在的地方
- java - 在 Docker 中运行 Wiremock 响应时,如何禁用 gzip 压缩?