MySQL 或条件可能为空的两列

MySQL Or condition on two columns that may be empty

我有一个 table customers,其中有一列 email_addresscontact_number,并且只需要其中一个。

现在我想写一个查询来检查客户是否存在。

到目前为止,这是我的查询:

SELECT * 
FROM customer c
WHERE (c.email_address = '' OR c.contact_number = '0123456789')
AND c.company_id = companyId

如果客户记录既有电子邮件地址又有联系电话,但如果客户只有其中之一(例如 email_address = '' 和 contact_number = '1234567890' ) 它 return 是一个正确的结果,但我希望它在 email_addresscontact_number 为空或空时不检查该列。

编辑: 这是我想要的一些示例数据和结果示例:

Table:客户

id, email_address, contact_number, company_id

1, '', '0123456789', 1

2, 'aa@aa.aa', '', 1

3, 'cc@cc.cc', '2345678901', 1

如果我给查询提供电子邮件地址:'aa@aa.aa' 和联系电话:'' 它必须 return 客户 2

如果我给查询提供电子邮件地址:'' 和联系电话:'2345678901',它必须 return 客户 3

如果我给查询提供电子邮件地址:'cc@cc.cc' 和联系电话:'0123456789',它必须 return 客户 1 和 3

如果我给查询提供电子邮件地址:'cc@cc.cc' 和联系电话:'2345678901123123132' 它必须 return 客户 3

如果我给查询提供电子邮件地址:'xx@cc.dd' 和联系电话:'234567890112312313223' 它必须 return 没有客户

您可能正在搜索的内容:

输入:EMAILPHONE

查询:

SELECT * 
FROM customer c
WHERE
(
     (c.email_address = 'EMAIL' AND 'EMAIL' <> '')
  OR (c.contact_number = 'PHONE' AND 'PHONE' <> '')
)
AND c.company_id = companyId