如何从 MySQL 查询的电子邮件地址中删除 'plus' 标签?
How do I remove 'plus' tags from email addresses in a MySQL query?
我有一个 table 包含电子邮件地址,其中一些包含 'plus' 标签 - 例如,
email
----------------------
user1@example.com
user2@example.org
user1+test@example.com
我需要能够查询 table 并接收不带标签的电子邮件地址:
email
----------------------
user1@example.com
user2@example.org
user1@example.com
此查询从 MySQL 的所有版本的电子邮件地址中删除标签:
SELECT IF(LOCATE('+', email) = 0,
email,
CONCAT(
SUBSTRING(email, 1, LOCATE('+', email) - 1),
SUBSTRING(email, LOCATE('@', email))))
FROM my_table;
英文:如果邮箱地址中没有+
,则直接使用邮箱地址即可;否则,将 +
左侧的文本与 @
到字符串末尾的文本连接起来。
如果你是运行 MySQL 8.0,你可以使用regexp_replace()
:
select
email,
regexp_replace(email, '\+[^@].*@+', '@') new_email
from mytable
此短语为:抑制以 '+'
开始直到 '@'
的任何字符序列。如果没有匹配项,regexp_replace()
将保持字符串不变。
with mytable as (
select 'user1@example.org' email
union all select 'user2@example.org'
union all select 'user1+test@example.com'
)
select
email,
regexp_replace(email, '\+[^@].*@+', '@') new_email
from mytable;
| email | new_email |
| ---------------------- | ----------------- |
| user1@example.org | user1@example.org |
| user2@example.org | user2@example.org |
| user1+test@example.com | user1@example.com |
我有一个 table 包含电子邮件地址,其中一些包含 'plus' 标签 - 例如,
email
----------------------
user1@example.com
user2@example.org
user1+test@example.com
我需要能够查询 table 并接收不带标签的电子邮件地址:
email
----------------------
user1@example.com
user2@example.org
user1@example.com
此查询从 MySQL 的所有版本的电子邮件地址中删除标签:
SELECT IF(LOCATE('+', email) = 0,
email,
CONCAT(
SUBSTRING(email, 1, LOCATE('+', email) - 1),
SUBSTRING(email, LOCATE('@', email))))
FROM my_table;
英文:如果邮箱地址中没有+
,则直接使用邮箱地址即可;否则,将 +
左侧的文本与 @
到字符串末尾的文本连接起来。
如果你是运行 MySQL 8.0,你可以使用regexp_replace()
:
select
email,
regexp_replace(email, '\+[^@].*@+', '@') new_email
from mytable
此短语为:抑制以 '+'
开始直到 '@'
的任何字符序列。如果没有匹配项,regexp_replace()
将保持字符串不变。
with mytable as (
select 'user1@example.org' email
union all select 'user2@example.org'
union all select 'user1+test@example.com'
)
select
email,
regexp_replace(email, '\+[^@].*@+', '@') new_email
from mytable;
| email | new_email |
| ---------------------- | ----------------- |
| user1@example.org | user1@example.org |
| user2@example.org | user2@example.org |
| user1+test@example.com | user1@example.com |