【发布时间】:2021-12-08 20:09:03
【问题描述】:
我有一个 MS Access 表,其中包含 2 列 [Issued Email] 和 [Email]。 通常,两列应具有相同的数据,但在某些情况下,只有 [Issued Email] 包含数据或 [Email]。我想将其过滤掉,以便我的查询仅显示行,其中一列或两列显示电子邮件地址,并且两者都不为空。
示例表(TableA):
Issued Email Email
----------------- ----------------
abc123@gmail.com abc123@gmail.com
EMPTY def456@mgail.com
null null
ghi@gmail.com null
EMPTY null
结果应该是:
Filtered Email
--------------
abc123@gmail.com
def456@mgail.com
ghi@gmail.com
所以我不仅要比较空值,还要比较两列中字符串“EMPTY”的出现。
我现在拥有的是:
SELECT * FROM TableA
WHERE
(TableA.[Issued Email] IS NOT NULL OR TableA.[Issued Email] NOT LIKE 'EMPTY')
AND
(TableA.[Email] IS NOT NULL OR TableA.[Email] NOT LIKE 'EMPTY');
但是,这不会过滤掉在两列中都包含 EMPTY 和/或 null 的行,这是有道理的,因为我只将同一列与其自身进行比较。
所以我想:
SELECT * FROM TableA
WHERE
(TableA.[Issued Email] IS NOT NULL OR TableA.[Email] IS NOT NULL)
AND
(TableA.[Issued Email] NOT LIKE 'EMPTY' OR TableA.[Email] NOT LIKE 'EMPTY');
但这会给我一个错误“标准表达式中的数据类型冲突”。 我不知道如何处理。
【问题讨论】:
标签: mysql sql ms-access logic linear-algebra