首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多个布尔运算符的SQL搜索

使用多个布尔运算符的SQL搜索
EN

Stack Overflow用户
提问于 2019-02-26 23:51:11
回答 2查看 47关注 0票数 0

我正在尝试编写一个有点复杂的sql搜索。我是SQL的新手,不是百分之百确定sql如何解释我的表达式。

我有一张这样的桌子:

代码语言:javascript
复制
| job_name | progression | status | 

我正在尝试将这个布尔运算符转换为SQL表达式

代码语言:javascript
复制
job_name LIKE (software OR SDE) AND NOT LIKE (embedded OR intern OR manager OR test OR SDET) AND progression IS (("Phone screen" AND (Status IS "yes))  OR ("On-site" AND (Status IS "yes" OR "no")))

我有这样的东西

代码语言:javascript
复制
select * from jobs
where job_name LIKE '%SDE'
OR job_name LIKE '%software%'
AND job_name NOT LIKE '%embedded%'
AND job_name NOT LIKE '%intern%'
AND job_name NOT LIKE '%manager%'
AND job_name NOT LIKE '%test%'
AND job_name NOT LIKE '%SDET%'

这似乎工作得很好。但是当我开始添加运算符来添加progression & status时,事情就变得一团糟了。

基本上,我希望看到包含SDESoftwarejob_name的每一行(但不是类似的),并且具有stage Phone ScreenEvaluation等于Yes或stage On-siteStatusYes或<代码>D14

我使用的是SQLite & SQLite studio

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-26 23:59:32

优先级的顺序可能是在这里引起问题的原因。在SQL中,我永远记不住AND/OR是如何工作的,即使我能记住,我也不指望阅读我的代码的人会记得。因此,我建议使用括号来解决歧义。下面这样的代码应该是有效的:

代码语言:javascript
复制
select * from jobs
where (job_name LIKE '%SDE' OR job_name LIKE '%software%')
 AND job_name NOT LIKE '%embedded%'
 AND job_name NOT LIKE '%intern%'
 AND job_name NOT LIKE '%manager%'
 AND job_name NOT LIKE '%test%'
 AND job_name NOT LIKE '%SDET%'
 AND (other conditions)
票数 2
EN

Stack Overflow用户

发布于 2019-02-26 23:57:21

尝试使用括号: select * from jobs where (job_name LIKE '%SDE‘或job_name LIKE '%software%')和job_name不LIKE '%embedded%’和job_name NOT LIKE‘%INTN%’和job_name不LIKE '%manager%‘和job_name不LIKE '%test%’和job_name NOT LIKE '%SDET%‘

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54889365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档