列'PrizeMoneyBreakDown‘包括由分号分隔的多个字符串。我正试图从数据中删除“总价值”、“奖杯总价值”和“福利基金”的字符串。这些字符串有时只出现在数据中,因此并不像删除最后三个字符串那么简单。我需要编写一个查询,如果字符串出现,就删除它们。
数据示例:
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;
预期的数据输出:
1st,5285;2nd,1680;3rd,885;4th,550;5th,350;6th,350;7th,350;8th,350
当前代码(只删除“总值”等字-不删除与字符串相关的奖金):
SELECT PrizeMoneyBreakDown,
REPLACE(REPLACE(REPLACE(PrizeMoneyBreakDown,'total_value',""),'welfare_fund',""),'trophy_total_value',"") as new
FROM race2;
发布于 2022-03-01 21:23:15
在MySQL 8+上,我们可以使用REGEXP_REPLACE
SELECT PrizeMoneyBreakDown,
REGEXP_REPLACE(PrizeMoneyBreakDown,
'(total_value|welfare_fund|trophy_total_value),\\d+;',
'') AS NewPrizeMoneyBreakDown
FROM race2;
如果要更新实际列,请使用:
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+;';
https://stackoverflow.com/questions/71317776
复制相似问题