【发布时间】:2016-04-13 02:24:02
【问题描述】:
我有以下代码:
SELECT sdd.sd_doc_classification,
sdd.sd_title,
sdd.sd_desc,
sdr.sd_upload_fname
FROM sdoc_docs AS sdd
INNER JOIN sdoc_revh AS sdr ON sdd.sd_id = sdr.sd_id
WHERE (sdd.sd_title LIKE '%policy%')
OR (sdd.sd_title LIKE '%guideline%')
AND (sdd.sd_doc_classification NOT LIKE '%\Trust Wide Policies & Guidelines\%')
但是,添加“OR (sdd.sd_title LIKE '%guideline%')”会破坏它,并且该语句现在返回的值类似于'%\Trust Wide Policies & Guidelines\%'。
删除上面的指南示例后,代码按预期运行。
基本上我想显示任何有sd_title 的东西,比如policy 或guideline,而没有sd_doc_classification 的东西,比如'%trust wide pol%'。
【问题讨论】:
-
正确使用括号即可。
-
当你混合
AND和OR时,你应该总是添加括号。优先级为NOT-AND-OR
标签: sql sql-server database select boolean-logic