您好,匿名用户
随意问技术百科期待您的加入

MySQL如何实现正则查找替换?

+1 投票

我有这样的需求:prodcuts_description 表里有很多多余的<br>标签,并且写法不一,如:<br /><br>。要替换掉两个以上的空行(<br>标签),我只知道正则大概这么写:

(<br */*>\s*){2,}

如何使用MySQL的SQL实现正则查找替换呢?

用户头像 提问 2012年 12月27日 @ Rumble 上等兵 (394 威望)
分享到:

1个回答

+1 投票
 
最佳答案

MYSQL不支持正则替换。mysql的正则匹配用regexp,而替换字符串用REPLACE(str,from_str,to_str)。建议在程序中进行正则替换处理,然后update。

如果硬是要用sql语句,可以使用下面类型的sql:

UPDATE myTable SET HTML=REPLACE(HTML,'<br>','') WHERE HTML REGEXP '(<br */*>\s*){2,}'

可是这么写会把所有<br>全部替换掉,因此干脆把REPLACE(HTML,'<br>','')改成REPLACE(HTML,substr(HTML,locate('<br><br>',HTML)+strlen('<br>'),strlen('<br>')),'')
这还不够,还得手动写多个'<br><br>'、'<br><br/><br/><br><br><br/>',还不够,还得循环数次这些命令。。。

 

用户头像 回复 2012年 12月27日 @ hacker 上等兵 (362 威望)
选中 2012年 12月27日 @Saber
提一个问题:

相关问题

+2 投票
1 回复 45 阅读
用户头像 提问 2013年 1月7日 @ Ares 上等兵 (353 威望)
0 投票
0 回复 17 阅读
0 投票
1 回复 35 阅读
0 投票
1 回复 38 阅读
0 投票
1 回复 45 阅读
用户头像 提问 2013年 9月12日 @ Caitlyn 上等兵 (452 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...