从mysql中具有多个单词的字段中提取电子邮件

时间:2016-07-27 08:13:02

标签: mysql sql substring

在我的MySQL表中,我有一个列-Reite_Address1。但它也有其他列的价值。我想从该字段中提取电子邮件ID。

示例数据。

例如,

abcs12@yahoo.com,abcs@gmail.com,cityname
cityname,zipcode,abcs@gmail.com
abcs@officedomain.com,cityname,abc@gmail.com
apartment,streetname,cityname,abc@gmail.com,abcd@yahoo.com

如果我这样试过:

select 
concat(trim(substring_index(substring_index(ResidenceAddress1, '@', '1'), ' ', -1)), '@gmail.com') as mail
,ResidenceAddress1
from mytable

1)它合并这样的数据。输出: abcs12@gmail.com
而不是abcs@gmail.com

2)它随地址一起提取电子邮件。输出:apartment,streetname,cityname,abc@gmail.com 而不是连续abc@gmail.com。

我试过这种方式。

select concat(substring_index((substring_index(Residence_Address1, '@', 2)),'@gmail',1),'@gmail.com') as mail, residence_address1
 from mytable
where Residence_Address1!="" and Residence_Address1 like '%gmail%'

1)它没有将像yahoo id这样的记录与gmail id合并。

2)但是它提供了完整的地址以及电子邮件ID。

eg.streetname,城市名,gmailid。

以上尝试主要是获取gmail ID。而不是只获取gmail id,我想从一行中提取所有电子邮件。只有电子邮件。

1 个答案:

答案 0 :(得分:2)

试试这个:

list.empty()

架构:

SELECT 
    CONCAT(
        TRIM(
            SUBSTRING_INDEX(
                SUBSTRING_INDEX(
                    SUBSTRING_INDEX(ResidenceAddress1, '@gmail', '1')
                , ' ', -1)
            , ',', -1)
        )
        , '@gmail.com') AS mail
    ,ResidenceAddress1
FROM mytable

结果:

CREATE TABLE mytable
    (`ResidenceAddress1` varchar(58))
;

INSERT INTO mytable
    (`ResidenceAddress1`)
VALUES
    ('abcs12@yahoo.com,abcs@gmail.com,cityname'),
    ('cityname,zipcode,abcs@gmail.com'),
    ('abcs@officedomain.com,cityname,abc@gmail.com'),
    ('apartment,streetname,cityname,abc@gmail.com,abcd@yahoo.com')
;

<强> 编辑:

| mail           | ResidenceAddress1                                          |
+----------------+------------------------------------------------------------+
| abcs@gmail.com | abcs12@yahoo.com,abcs@gmail.com,cityname                   | 
| abcs@gmail.com | cityname,zipcode,abcs@gmail.com                            | 
| abc@gmail.com  | abcs@officedomain.com,cityname,abc@gmail.com               | 
| abc@gmail.com  | apartment,streetname,cityname,abc@gmail.com,abcd@yahoo.com | 

Demo