从 mysql 字段中提取电子邮件地址

Dav*_*ley 4 mysql

我的表中有一个长文本列“描述”,有时包含电子邮件地址。我需要提取此电子邮件地址并添加到每行的单独列中。这可以在 MySQL 中实现吗?

小智 5

您可以使用子字符串索引来捕获电子邮件地址...

第一个子字符串索引捕获帐户。
第二个 substring_index 捕获主机名。如果该列中存储了多个 atso (@),则必须选择相同的电子邮件地址。

select concat( substring_index(substring_index(description,'@',1),' ',-1)
             , substring_index(substring_index( description,
                                                substring_index(description,'@',1),-1),
                               ' ',1))
Run Code Online (Sandbox Code Playgroud)


Saj*_*Saj 5

是的,你可以使用mysql的REGEXP(也许这是版本5和8的新功能,可能是在这个问题发布之后。)

SELECT *, REGEXP_SUBSTR(`description`, '([a-zA-Z0-9._%+\-]+)@([a-zA-Z0-9.-]+)\.([a-zA-Z]{2,4})') AS Emails FROM `mytable`;
Run Code Online (Sandbox Code Playgroud)