【发布时间】:2015-04-27 22:30:38
【问题描述】:
我在数据库中有一个文本字段,它存储多个电子邮件地址,由空格、逗号和分号混合分隔(这些的外观非常随机,因为它是用户输入的数据)。我需要更改此字符串中的每个电子邮件地址,以便将“@”更改为“.at”。然后将“@fake.mydomain.com”放在最后,然后用“,”重新加入它们,即逗号空格。
所以,例如,我想从这里开始
"michael.dolenz@gmail.com, daveyjones@hotmail.co.uk;mike.nesmith.1@foo.com;,petertork@mymail.com"
到这里
"michael.dolenz.at.gmail.com@fake.mydomain.com, daveyjones.at.hotmail.co.uk@fake.mydomain.com, mike.nesmith.1.at.foo.com@fake.mydomain.com, petertork.at.mymail.com@fake.mydomain.com"
为了举例,表称为campaigns,字段称为email_addresses。
如果该字段只是一个电子邮件地址,我可以使用
update campaigns set email_addresses = concat(replace(email_addresses,'@', '.at.'), '@fake.mydomain.com'
所以我想我需要做“像 /[\s,;]+/ 这样的正则表达式拆分”,对每个部分执行上述操作,然后加入“,”。
我可以用一个 mysql 命令来做到这一点吗? 谢谢,马克斯
编辑:在我们服务器上的 MySQL 版本中,我不能执行基于正则表达式的 REPLACE,否则我会使用 REPLACE(email_addresses, '/[,;\s^]+/', '@fake.mydomain .com, ')
【问题讨论】:
-
为什么需要拆分和重新加入字符串?一个简单的string replace 就足够了吗?
-
@GeorgeCummins 是的,我认为会涉及到拆分,但如果有办法做到这一点,那就太好了。