今天在工作的过程中碰到一个问题,要把数据库中某个列的所有值中含有”#”的字符都去掉,本来可以写个脚本,把所有的值都取出再用php进行处理,但是那样就效率非常低了,想到看试下能不能直接在MySQL中用SQL语句直接来处理,经过一番搜索,终于找到解决方案,其实最重要的是mysql的replace函数,关于这个函数的介绍,我在MySQL手册中是没看懂,不过能实现我想要的功能就行。
下面就是对这个函数的简要介绍以及范例。注意哦!REPLACE要大写,我今天刚开始在SQL语句中小写不行,后面改成大写就可以了,不知道有没有错,反正大写肯定没错就是了!
比如你要将 表 tb1里面的 f1字段的abc替换为def
UPDATE tb1 SET f1=REPLACE(f1, ‘abc’, ‘def’);
REPLACE(str,from_str,to_str)
在字符串 str 中所有出现的字符串 from_str 均被 to_str替换,然后返回这个字符串:
mysql> SELECT REPLACE(‘www.mysql.com’, ‘w’, ‘Ww’);
-> ‘WwWwWw.mysql.com’
这个函数是多字节安全的。
示例:
UPDATE `dede_addonarticle` SET body = REPLACE ( body,’</td>’,” );
UPDATE `dede_addonarticle` SET body = REPLACE ( body,’</tr>’,” );
UPDATE `dede_addonarticle` SET body = REPLACE ( body,’<tr>’,” );
UPDATE `dede_archives` SET title= REPLACE ( title,’大洋新闻 – ‘,” );
UPDATE `dede_addonarticle` SET body = REPLACE ( body,’http://www.cnblogs.com/http://www.cnblogs.com/http://www.cnblogs.com/’,'http://special.dayoo.com/meal/’ );
mysql replace
用法1.replace intoreplace into table (id,name) values(‘1‘,‘aa‘),(‘2‘,‘bb‘)
此语句的作用是向表table中插入两条记录。
2.replace(object, search,replace)
把object中出现search的全部替换为replaceselect replace(‘www.163.com‘,‘w‘,‘Ww‘)—>WwW wWw.163.com
例:把表table中的name字段中的 aa替换为bbupdate table set name=replace(name,‘aa‘,‘bb‘)