MYSQL 批量替换之replace语法的使用详解

MYSQL 批量替换之replace语法的使用详解,第1张

实际需求中,需要对某张表某字段里面的内容进行批量替换,普通的思考流程如下:

SELECT出来

str_replace替换

UPDATE写入

实际这样极其浪费资源以及消耗资源,MYSQL内置了一个批量替换的语法

复制代码

代码如下:

UPDATE

table

SET

field

=

replace(field,'被替换','替换成')

直接就替换了,后面也可以跟WHERE

条件语句

支持多个词同时被替换

复制代码

代码如下:

UPDATE

table

SET

field

=

replace(field,'被替换1','替换成1'),field

=

replace(field,'被替换2','替换成2')

很强大吧,后面那个一次性更换多个网上是没有的列子,现在记录下来

mysql 替换字符串的实现方法:

mysql中replace函数直接替换mysql数据库中某字段中的特定字符串,不再需要自己写函数去替换,用起来非常的方便,mysql 替换函数replace()

Update `table_name` SET `field_name` = replace (`field_name`,’from_str’,'to_str’) Where `field_name` LIKE ‘%from_str%’

实例:把'病假' 替换为 '--':UPDATE users SET username=REPLACE(username,'病假','--') WHERE username LIKE '%病假%'

说明:

table_name —— 表的名字

field_name —— 字段名

from_str —— 需要替换的字符串

to_str —— 替换成的字符串

1)没有key的时候,replace与insert .. on deplicate udpate相同。

2)有key的时候,都保留主键值,并且auto_increment自动+1

不同之处:有key的时候,replace是delete老记录,而录入新的记录,所以原有的所有记录会被清除,这个时候,如果replace语句的字段不全的话,有些原有的比如c字段的值会被自动填充为默认值。

而insert .. deplicate update则只执行update标记之后的sql,从表象上来看相当于一个简单的update语句。

但是实际上,根据我推测,如果是简单的update语句,auto_increment不会+1,应该也是先delete,再insert的 *** 作,只是在insert的过程中保留除update后面字段以外的所有字段的值。

所以两者的区别只有一个,insert .. on deplicate udpate保留了所有字段的旧值,再覆盖然后一起insert进去,而replace没有保留旧值,直接删除再insert新值。

从底层执行效率上来讲,replace要比insert .. on deplicate update效率要高,但是在写replace的时候,字段要写全,防止老的字段数据被删除。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8593776.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存