替换列中使用正则表达式找到的子字符串

问题描述 投票:0回答:1

我在 MySQL 8 中有一个表。在 varchar 列中,我想用另一个子字符串替换长子字符串。我可以使用这个正则表达式找到这些行:

SELECT notetext FROM mytable WHERE notetext REGEXP '[a-zA-Z0-9_.:\/-]{25,}';

此正则表达式搜索具有长度> 25的子字符串的所有行。但是,我不知道如何用替换子字符串替换匹配的子字符串。我想做这样的事情:

  update mytable set notetext = replace(notetext,** regex match ***,  'replacement text') WHERE notetext REGEXP '[a-zA-Z0-9_.:\/-]{25,}'; 

假设注释文本是“这是跟踪号码 8868848848838883399999499494949949949949”。当在某处打印时,它会超出打印区域。目的是通过添加空格来打破此跟踪编号,以便在打印时文本换行,从而使整个文本保留在固定长度的打印区域中,并且如果长单词中没有换行,则打印系统不会换行。

“这是追踪号码 8868848848838883399 999499494949949949949”

mysql
1个回答
0
投票

我认为您正在尝试查找前 25 个字符...

如果是,请使用查询:

set @st = 'this is the tracking number 8868848848838883399 999499494949949949949';

select REGEXP_REPLACE(@st, '.*', '', 25) as trim_str;

示例代码:db<>fiddle

© www.soinside.com 2019 - 2024. All rights reserved.