在mysql中替换两个字符之间的文本

时间:2018-01-11 17:40:42

标签: mysql sql

我需要在mysql表中的一列中替换两个特定字符之间的文本。 例如。在我的“电子邮件”栏中,我想从'@ gmail.com'替换'gmail'并将其替换为'yahoo'。 也就是说,在'@'和'。'之间找到文本,并替换文本。 这是我试过的:

UPDATE users
SET email= REPLACE (email, '%@%.%', 'test')
WHERE email LIKE %@%.%;

我认为这些通配符仅在WHERE子句中使用。如何将它放在REPLACE()函数中? 很感谢任何形式的帮助。感谢。

1 个答案:

答案 0 :(得分:3)

如果要替换“@gmail”。用“@yahoo。”,然后简单地做:

UPDATE users
    SET email = REPLACE(email, '@gmail.', '@yahoo.')
WHERE email LIKE '%@gmail.%';

如果您希望域名始终是gmail,那么您可以尝试重建电子邮件:

UPDATE users
    SET email = CONCAT(substring_index(email, '@', 1), '@',
                       'yahoo',
                       substring_index(email, '.', -1)
                      )
    WHERE email LIKE '%@%.%';

这不是100%准确 - 当有多个“@”或“。”时,您的问题是未定义的。在email。但它可能会做你需要的。