GSR*_*SRB 2 sql ms-access sql-like
我正在使用如下查询。
SELECT * FROM TableName
WHERE ([Material Description] Not Like "*LICENSE*" Or
[Material Description] Not Like "*LICENCE*");
Run Code Online (Sandbox Code Playgroud)
但是,这会获取“材料描述”字段中包含带有 LICENSE 或 LICENSE 的记录的结果。请告知我缺少什么,以便我的查询产生的结果省略了“材料描述”字段中包含这些单词的记录。
你真正想要的是AND介于两者之间:
SELECT * FROM TableName
WHERE ([Material Description] NOT LIKE '*LICENSE*' AND
[Material Description] NOT LIKE '*LICENCE*');
Run Code Online (Sandbox Code Playgroud)
您当前将选择记录“LICENSE”,因为它不包含“LICENCE”,并且选择记录“LICENCE”,因为它不包含“LICENSE”。您当前真正排除的记录是包含“LICENCE”和
“LICENSE”
的记录,可能不多;)。这种小小的混乱是由于 Or 与 Not 的结合使用而产生的。
实现相同目标的另一种方法是将 移到ed 条件NOT前面OR:
SELECT * FROM TableName
WHERE NOT ([Material Description] LIKE '*LICENSE*' OR
[Material Description] LIKE '*LICENCE*');
Run Code Online (Sandbox Code Playgroud)
这样,你真正想要实现的目标就更清楚了。
这将与真值表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
Run Code Online (Sandbox Code Playgroud)
你的真值表看起来像
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
Run Code Online (Sandbox Code Playgroud)