我正在尝试检查电子邮件列表的有效性。有效的电子邮件格式为:
我可以使用正则表达式或LIKE运算符找到有效的电子邮件。但是,我想了解是否有一种方法可以使用其他列(例如“名称”和“姓氏”)中的数据,以避免由[A- Za-z]在正则表达式中。
我已经尝试过:
SELECT name,
lastname,
email,
CASE
WHEN email ~ '[A-Za-z]*\.[A-Za-z]*\@[A-Za-z]*\.[A-Za-z]*' THEN true
ELSE false
END AS valid
FROM personlist
和此:
SELECT name,
lastname,
email,
CASE
WHEN email LIKE '%.%||%.%' THEN true
ELSE false
END AS valid
FROM personlist
它们似乎工作得很好,但是我想了解是否可以通过像LIKE这样的运算符来使用其他列中的数据。我认为使用现有列中的数据将导致更有针对性和更可靠的查询。
例如:
+-----------+----------+-----------------------------+-------+
| name | lastname | email | valid |
+-----------+----------+-----------------------------+-------+
| Molly-Rae | Jackson | [email protected] | true |
| Molly-Rae | Jackson | [email protected] | false |
+-----------+----------+-----------------------------+-------+
您可以使用其他列来计算要验证的模式。例如:
select
name,
lastname,
email,
lower(email) like lower(name || '.' || lastname || '@xmail.com') as valid
from personlist