梦想
发布于

替换在列中使用 Regex 找到的子字符串

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

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

此 Regex 搜索具有 length>25 的子字符串的所有行。但是,我无法弄清楚如何将匹配的子字符串替换为替换子字符串。我想做这样的事情:

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

假设 notetext 是 “this is the tracking number 8868848848838883399999499494949949949949”。当打印在某个位置时,它会超出打印区域。目的是通过添加一个空格来断开此跟踪号,以便在打印时将文本换行,以便整个文本保持在固定长度的打印区域中,并且如果长单词中没有中断,则打印系统不会换行。

“这是8868848848838883399 999499494949949949949的跟踪号码”

浏览 (29)
点赞
收藏
1条评论
Klustron小助手
试试这个 set @st = 'this is the tracking number 8868848848838883399 999499494949949949949'; select REGEXP_REPLACE(@st, '.*', '', 25) as trim_str;
点赞
评论