84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
我有这样的需求:prodcuts_description 表里有很多多余的<br>标签,并且写法不一,如:<br />、<br>。要替换掉两个以上的空行(<br>标签),我只知道正则大概这么写:
prodcuts_description
<br>
<br />
(<br */*>\s*){2,}
MySQL应该怎么实现?
业精于勤,荒于嬉;行成于思,毁于随。
mysql的正则匹配用regexp,而替换字符串用REPLACE(str,from_str,to_str)
例如UPDATE myTable SET HTML=REPLACE(HTML,'<br>','') WHERE HTML REGEXP '(<br */*>\s*){2,}'
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/>', 还不够,还得循环数次这些命令。。。。
关键的是,SQL语句无法实现正则匹配后取其中一部分的字符串来替换,所以你这里用sql实现是异常蛋疼的,干脆在程序里做正则替换,然后update吧。
mysql的正则匹配用regexp,而替换字符串用REPLACE(str,from_str,to_str)
例如
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/>',
还不够,还得循环数次这些命令。。。。
关键的是,SQL语句无法实现正则匹配后取其中一部分的字符串来替换,所以你这里用sql实现是异常蛋疼的,干脆在程序里做正则替换,然后update吧。