MySQL替换函数例子

SQL/NoSQL 2012-08-02 MySQL,替换,REPLACE

一般对于博客程序来说,使用替换语句也许是最有用的一种维护方式了,特别是对于所有博文内容里有统一修改的地方。由于我的博客站点在upload图片上传目录下需要按年建目录,这倒不是什么难点,可是之前上传的图片都要移动到相应的目录里,这样的话博文里所有的图片URL都要改变。

比如图片a.jpg原来在upload路径下,博文里的地址是http://www.qttc.net/static/upload/a.php。现在要把a.jpg移动到upload下的2012文件夹里,那么博文里的地址就需要改变成http://www.qttc.net/static/upload/2012/a.jpg这样才能访问移动后的图片。如果是单处修改还好,如果所有文章的图片地址都需要修改,显然通过后台一篇一篇的改有点力不从心,并且可能会遗漏。像这样的情况,我们可以使用MySQL的替换语句。由于图片地址目录都一样是www.qttc.net/static/upload,我们只需要把这部分都统一修改成www.qttc.net/static/upload/2012就好。

SQL语句

UPDATE 表名
SET 字段名 = REPLACE(字段名, '搜索的字符串', '替换的字符串')
WHERE INSTR(字段名,'搜索的字符串') > 0

这个语句的用法特别简单,使用MySQL的REPLACE()替换函数即可实现,REPLACE函数的第一个选项是字段名,第二个选项是要搜索的字符串,第三个选项是替换的字符串。最后那一句INSTR()函数是模糊查询方法,效果跟使用LIKE()函数一样,表示只替换查询到的数据。

如我的表名blog,博文内容字段名b_content,那么这个需求的SQL语句就可以这么写

UPDATE blog
SET b_content = REPLACE(b_content, 'www.qttc.net/static/upload', 'www.qttc.net/static/upload/2012')
WHERE INSTR(b_content,'www.qttc.net/static/upload') > 0

执行后再来看看博文中所有图片的链接地址,都已OK。

其实REPLACE()函数还有很多诸如类似需要用到的地方,比如把博文的空格删掉

UPDATE blog
SET b_content = REPLACE(b_content, ' ', '')
WHERE INSTR(b_content,' ') > 0

但是感觉用MySQL的TRIM()清除空格函数会更好一些

UPDATE blog SET b_content = TRIM(b_content)

这样也可以实现清除空格效果

文字链接:《MySQL替换函数例子

文章地址:http://www.qttc.me/201208156.html

除非标注,琼台博客所有博文均为原创,转载请加文字链接注明来源

乳名?小名?昵称?网名?均可

email,放心,我不会给你乱投广告的

想获得回访就把你的站点URL写上(没有留空)

[NOTICE]木要投放广告
[NOTICE]木要骂人,说不该说的话
[NOTICE]自由言论,但要遵纪守法

Comments 3