繁体   English   中英

mysql从电子邮件地址中删除点

[英]mysql remove points from the E-mail Addresses

我的桌子上没有几个Gmail地址

foobarbaz@gmail.com 
foo.bar.baz@gmail.com
foobar.baz@gmail.com
foo.barbaz@gmail.com

我需要替换包含符号“。”的地址gmail。 要得到:

foobarbaz@gmail.com 
foobarbaz@gmail.com
foobarbaz@gmail.com
foobarbaz@gmail.com

我的查询不起作用

UPDATE voters set email
replace(substring(email, 1, LOCATE('@', email) -1), '.', '')
WHERE email REGEXP '@googlemail.com|@gmail.com'

请帮助,谢谢!

您要在@之前提取子字符串并替换点,但是执行此操作后,您无需在@之后添加子字符串:

UPDATE voters 
SET email = CONCAT(replace(substring(email, 1, LOCATE('@', email) -1), '.', ''),
                   SUBSTRING(email, LOCATE('@', email)))
WHERE email REGEXP '@googlemail.com|@gmail.com'

DEMO

您可以使用与以下查询类似的东西使用substring_indexsubstring

UPDATE table1
SET email = CONCAT (
        replace(substring_index(email, '@', 1), '.', '')
        ,substring(email, instr(email, '@'))
        )
WHERE substring_index(email, '@', -1) IN (
        'googlemail.com'
        ,'gmail.com'
        );

SQLFiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM