首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL -当字符串出现时替换它

MySQL -当字符串出现时替换它
EN

Stack Overflow用户
提问于 2022-03-02 05:19:08
回答 1查看 104关注 0票数 0

列'PrizeMoneyBreakDown‘包括由分号分隔的多个字符串。我正试图从数据中删除“总价值”、“奖杯总价值”和“福利基金”的字符串。这些字符串有时只出现在数据中,因此并不像删除最后三个字符串那么简单。我需要编写一个查询,如果字符串出现,就删除它们。

数据示例:

代码语言:javascript
运行
复制
1st,5285;2nd,1680;3rd,885;4th,550;5th,350;6th,350;7th,350;8th,350;total_value,10000;welfare_fund,200;trophy_total_value,150;

预期的数据输出:

代码语言:javascript
运行
复制
1st,5285;2nd,1680;3rd,885;4th,550;5th,350;6th,350;7th,350;8th,350

当前代码(只删除“总值”等字-不删除与字符串相关的奖金):

代码语言:javascript
运行
复制
SELECT PrizeMoneyBreakDown,
  REPLACE(REPLACE(REPLACE(PrizeMoneyBreakDown,'total_value',""),'welfare_fund',""),'trophy_total_value',"") as new
FROM race2;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-02 05:23:15

在MySQL 8+上,我们可以使用REGEXP_REPLACE

代码语言:javascript
运行
复制
SELECT PrizeMoneyBreakDown,
       REGEXP_REPLACE(PrizeMoneyBreakDown,
                      '(total_value|welfare_fund|trophy_total_value),\\d+;',
                      '') AS NewPrizeMoneyBreakDown
FROM race2;

如果要更新实际列,请使用:

代码语言:javascript
运行
复制
UPDATE race2
SET PrizeMoneyBreakDown = REGEXP_REPLACE(
    PrizeMoneyBreakDown,
    '(total_value|welfare_fund|trophy_total_value),\\d+;',
    '')
WHERE PrizeMoneyBreakDown REGEXP '(total_value|welfare_fund|trophy_total_value),\\d+;';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71317776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档