我在where语句中使用以下逻辑。
如果我只执行下面的语句,那么它将返回结果
where a.CONDITION_NAME like '%colon%' and a.STUDY_CRITERIA like '%braf%'
但是,如果我将where逻辑扩展到以下语句,则不会返回任何结果。为什么?它不应该返回与上述where语句相同的东西吗?
where a.CONDITION_NAME like '%colon%' and a.STUDY_CRITERIA like '%braf%' and
(a.SHORT_TITLE like '%braf%' or
a.STUDY_TITLE like '%braf%' or
a.DESCRIPTION like '%braf%')
基本上我想要的是以下内容。我需要它来查找条件名称如冒号且学习条件字段如braf的记录。但是由于还有其他字段可以包含braf术语,因此我需要它来搜索简短标题或研究标题或说明是否也包含braf术语。有另一种方法可以编码吗?这是通过pgadmin4通过postgreSQL完成的
答案 0 :(得分:0)
这是因为您在AND
组中添加了OR
条件。
因此它将得到1 && 0
的{{1}}。
0
将此设置更改为where (a.CONDITION_NAME like '%colon%' and a.STUDY_CRITERIA like '%braf%') or
(a.SHORT_TITLE like '%braf%' or
a.STUDY_TITLE like '%braf%' or
a.DESCRIPTION like '%braf%')
。
答案 1 :(得分:0)
按照您的解释
where a.CONDITION_NAME like '%colon%' and
(a.STUDY_CRITERIA like '%braf%' or
a.SHORT_TITLE like '%braf%' or
a.STUDY_TITLE like '%braf%' or
a.DESCRIPTION like '%braf%')
答案 2 :(得分:0)
因为以下部分返回false:
(a.SHORT_TITLE like '%braf%' or
a.STUDY_TITLE like '%braf%' or
a.DESCRIPTION like '%braf%')
请记住,在逻辑上
1 AND 0返回0,1或0返回1。
。我不知道您到底需要什么,但是如果可以根据需要将最后一个AND更改为OR。