作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用如下查询。
SELECT * FROM TableName
WHERE ([Material Description] Not Like "*LICENSE*" Or
[Material Description] Not Like "*LICENCE*");
但是,这会获取在 Material 描述字段中具有 LICENSE 或 LICENSE 记录的结果。请告知我遗漏了什么,以便我的查询产生的结果省略了 Material 描述字段中包含这些词的记录。
最佳答案
你真正想要的是介于两者之间的 AND
:
SELECT * FROM TableName
WHERE ([Material Description] NOT LIKE '*LICENSE*' AND
[Material Description] NOT LIKE '*LICENCE*');
您当前将选择记录“LICENSE”,因为它NOT 包含“LICENCE”,而记录“LICENCE”,因为它NOT 包含“LICENSE”。< br/>您当前真正排除的记录是包含“LICENCE”AND“LICENSE”的记录,可能不多;)。将 Or 与 Not 结合使用会引起一点困惑。
实现相同目标的另一种方法是将 NOT
移到 OR
ed 条件前面:
SELECT * FROM TableName
WHERE NOT ([Material Description] LIKE '*LICENSE*' OR
[Material Description] LIKE '*LICENCE*');
这样一来,您实际想要实现的目标就更加清晰了。
这将读取 NOT (A OR B)
而不是 (NOT A) OR (NOT B)
并且具有非常不同的真值表:
A B | ( ~ A ) & ( ~ B )
----------------------------------
0 0 | 1 0 1 1 0
0 1 | 1 0 0 0 1
1 0 | 0 1 0 1 0
1 1 | 0 1 0 0 1
A B | ~ ( A | B )
-------------------------
0 0 | 1 0 0 0
0 1 | 0 0 1 1
1 0 | 0 1 1 0
1 1 | 0 1 1 1
你的真值表看起来像
A B | ( ~ A ) | ( ~ B )
----------------------------------
0 0 | 1 0 1 1 0
0 1 | 1 0 1 0 1
1 0 | 0 1 1 1 0
1 1 | 0 1 0 0 1
关于sql - 使用 NOT LIKE 在 Access 中查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30724077/
我是一名优秀的程序员,十分优秀!