【问题标题】:MS Access query select one of 2 columns based on conditionsMS Access查询根据条件选择2列之一
【发布时间】: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


    【解决方案1】:

    试试下面UNION查询

    SELECT [Issued Email] as ValidMail FROM TableA WHERE [Issued Email] Like '*@*';   
      UNION 
    SELECT Email as ValidMail FROM TableA WHERE Email Like '*@*';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 2018-07-25
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      • 2023-04-07
      相关资源
      最近更新 更多