首先描述遇到的问题:
假设以下是数据库中的一个表mt2:
+----+------------------------------------------+
| id | name |
+----+------------------------------------------+
| 1 | sdfsfbeijingsldjfsld |
| 2 | sdfsfshanghaisldjfsld |
| 3 | sdfsfjnsldjfsld |
| 4 | sdfsfqdsldjfsld |
+----+------------------------------------------+
现在的需求是:将该表中到的内容删除。
mysql模糊更新替换字符串
众所周知,replace函数是不支持正则表达式的,所以只能采用其他的方法处理。
mysql支持很多函数功能,于是,我们可以使用其自带的函数来完成目标。
例如,对如上要求,我们可以使用replace、substring、locate这三个字符串操作函数来实现。语句示例如下:
update mt2 set name = replace(name, substring(name, locate('', name),locate('', name)-locate(''+10, name)),'');
结果:
+----+-------------------+
| id | name |
+----+-------------------+
| 1 | sdfsfactsldjfsld |
| 2 | sdfsfactsldjfsld |
| 3 | sdfsfactsldjfsld |
| 4 | sdfsfactsldjfsld |
+----+-------------------+
再如,我要对数据表gx_video中的playurl字段包含$$$标记的之后的字符串进行清理,使用了如下语句:
Update `gx_video` SET playurl = LEFT( `playurl`, LOCATE( '$$$', `playurl` ) -1 ) Where