在我的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,我想从一行中提取所有电子邮件。只有电子邮件。
答案 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 |