gpt4 book ai didi

MySQL:拆分字段,对每个部分进行字符串替换和连接,然后重新加入

转载 作者:行者123 更新时间:2023-11-29 22:29:54 24 4
gpt4 key购买 nike

我在数据库中有一个文本字段,其中存储多个电子邮件地址,由空格、逗号和分号混合分隔(这些地址的出现非常随机,因为它是用户输入的数据)。我需要更改此字符串中的每个电子邮件地址,以便将“@”更改为“.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,')

最佳答案

示例文本看起来有一个分号,看起来像分隔符。根据您的描述,我假设您的示例应将所有逗号作为分隔符。

试试这个:

select concat(replace(replace('michael.dolenz@gmail.com, daveyjones@hotmail.co.uk,mike.nesmith.1@foo.com,petertork@mymail.com','@','.at.'),',','@fake.mydomain.com,'),'@fake.mydomain.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

基本上,将“@”替换为“.at.”,将逗号替换为“@fake.mydomain.com”,然后将 @fake.mydomain.com 添加到最后一个没有的字段的末尾逗号分隔符。

关于MySQL:拆分字段,对每个部分进行字符串替换和连接,然后重新加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29898135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com