MySQL实现replace函数的几种实用场景

 更新时间:2021年02月06日 10:03:28   作者:_陈哈哈  
这篇文章主要介绍了MySQL实现replace函数的几种实用场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

REPLACE语法

REPLACE(String,from_str,to_str)

即:将String中所有出现的from_str替换为to_str,这里的from_str不支持正则匹配。

操作实例

测试表数据如下:

mysql> select * from `LOL`;
+----+----------------+--------------+-------+
| id | hero_title   | hero_name  | price |
+----+----------------+--------------+-------+
| 1 | 刀锋之影    | 泰隆     | 6300 |
| 2 | 迅捷斥候    | 提莫     | 6300 |
| 3 | 光辉女郎AA   | 拉克丝    | 1350 |
| 4 | 发条A魔灵A   | 奥莉安娜   | 6300 |
| 5 | 至高之拳    | 李青     | 6300 |
| 6 | 无极剑圣    | 易      |  450 |
| 7 | 疾风剑豪    | 亚索     | 6300 |
+----+----------------+--------------+-------+
7 rows in set (0.00 sec)

使用场景1 – (Query语句):

需求:把"hero_title"字段中所有的"之"换成" - "来展示,SQL如下:

SELECT REPLACE(hero_title,'之',' - ')as repl_title,hero_name,price from LOL;
mysql> SELECT REPLACE(hero_title,'之',' - ') as repl_title,hero_name,price from `LOL`;
+----------------+--------------+-------+
| repl_title   | hero_name  | price |
+----------------+--------------+-------+
| 刀锋 - 影   | 泰隆     | 6300 |
| 迅捷斥候    | 提莫     | 6300 |
| 光辉女郎AA   | 拉克丝    | 1350 |
| 发条A魔灵A   | 奥莉安娜   | 6300 |
| 至高 - 拳   | 李青     | 6300 |
| 无极剑圣    | 易      |  450 |
| 疾风剑豪    | 亚索     | 6300 |
+----------------+--------------+-------+
7 rows in set (0.00 sec)

使用场景2 – (update语句):

需求:把"hero_title"字段中所有的"A"去掉,SQL如下:

UPDATE LOL SET hero_title=REPLACE(hero_title,‘A','');

mysql> UPDATE `LOL` SET hero_title=REPLACE(hero_title,'A','');
Query OK, 2 rows affected (0.05 sec)
Rows matched: 7 Changed: 2 Warnings: 0
-- 去掉后在查询:
+----+--------------+--------------+-------+
| id | hero_title  | hero_name  | price |
+----+--------------+--------------+-------+
| 1 | 刀锋之影   | 泰隆     | 6300 |
| 2 | 迅捷斥候   | 提莫     | 6300 |
| 3 | 光辉女郎   | 拉克丝    | 1350 |
| 4 | 发条魔灵   | 奥莉安娜   | 6300 |
| 5 | 至高之拳   | 李青     | 6300 |
| 6 | 无极剑圣   | 易      |  450 |
| 7 | 疾风剑豪   | 亚索     | 6300 |
+----+--------------+--------------+-------+
7 rows in set (0.00 sec)

使用场景3 – (插入或替换:REPLACE INTO)

如果我们想插入一条新记录(INSERT),但如果记录已经存在,就先删除原记录,再插入新记录。

需求场景:

这张表存的每个客户最近一次交易订单信息,要求保证单个用户数据不重复录入,且执行效率最高,与数据库交互最少,支撑数据库的高可用。
此时,可以使用"REPLACE INTO"语句,这样就不必先查询,再决定是否先删除再插入。

  • "REPLACE INTO"语句是基于唯一索引或主键来判断唯一(是否存在)的。
  • "REPLACE INTO"语句是基于唯一索引或主键来判断唯一(是否存在)的。
  • "REPLACE INTO"语句是基于唯一索引或主键来判断唯一(是否存在)的。

注意事项:如下SQL所示,需要在username字段上建立唯一索引(Unique),transId设置自增即可。

-- 20点充值
REPLACE INTO last_transaction (transId,username,amount,trans_time,remark) 
  VALUES (null, 'chenhaha', 30, '2020-06-11 20:00:20', '会员充值');
 
-- 21点买皮肤
REPLACE INTO last_transaction (transId,username,amount,trans_time,remark) 
  VALUES (null, 'chenhaha', 100, '2020-06-11 21:00:00', '购买盲僧至高之拳皮肤');

 若username='chenhaha'的记录不存在,REPLACE语句将插入新记录(首次充值),否则,当前username='chenhaha'的记录将被删除,然后再插入新记录。

id不要给具体值,不然会影响SQL执行,业务有特殊需求除外。

到此这篇关于MySQL实现replace函数的几种实用场景的文章就介绍到这了,更多相关MySQL replace实用场景内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于mongodb连接池配置方式

    关于mongodb连接池配置方式

    这篇文章主要介绍了关于mongodb连接池配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • MySQL优化之对RAND()的优化方法

    MySQL优化之对RAND()的优化方法

    这篇文章主要介绍了MySQL优化之对RAND()的优化方法,本文详细分析了Mysql中对RAND()的几种优化方法,并最终得出一个结论,需要的朋友可以参考下
    2014-07-07
  • MySQL数据库之内置函数和自定义函数 function

    MySQL数据库之内置函数和自定义函数 function

    这篇文章主要介绍了MySQL数据库之内置函数和自定义函数 function,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-06-06
  • MySql存储过程学习知识小结

    MySql存储过程学习知识小结

    这篇文章主要介绍了MySql存储过程学习知识小结的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • MySQL实例讲解子查询的使用

    MySQL实例讲解子查询的使用

    所谓子查询是指在一个查询中嵌套了其他的若干查询,即在一个SELECT查询语句的WHERE或FROM子句中包含另一个SELECT查询语句,下面这篇文章主要给大家介绍了关于MySQL子查询的相关资料,需要的朋友可以参考下
    2023-03-03
  • mysql和sqlserver查询数据库表的数量方法详解

    mysql和sqlserver查询数据库表的数量方法详解

    这篇文章主要介绍了mysql和sqlserver查询数据库表的数量方法详解,本文给大家分享SQL语句写法,文末补充介绍了查询sqlserver 数据库中各表条数的语句,需要的朋友可以参考下
    2023-07-07
  • 最全的mysql 5.7.13 安装配置方法图文教程(linux) 强烈推荐!

    最全的mysql 5.7.13 安装配置方法图文教程(linux) 强烈推荐!

    这篇文章主要为大家详细介绍了linux下mysql 5.7.13 安装配置方法图文教程,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Mysql 5.7.17 winx64免安装版,win10环境下安装配置图文教程

    Mysql 5.7.17 winx64免安装版,win10环境下安装配置图文教程

    这篇文章主要介绍了Mysql 5.7.17 winx64免安装版,win10环境下安装配置图文教程,需要的朋友可以参考下
    2017-01-01
  • MySQL和HBase的使用对比

    MySQL和HBase的使用对比

    MySQL和HBase是两种不同的数据库,MySQL是一个关系型数据库,支持事务,而HBase是一个NoSQL数据库,支持海量数据的读写,MySQL适用于OLTP业务,而HBase适用于OLAP业务
    2024-12-12
  • mysql获取随机数据的方法

    mysql获取随机数据的方法

    在mysql中获取随机数据方法很简单只要使用order by rand()即可了,但是如果你是百万级数据量,使用order by rand()获取随机数据你会等死去,下面我来介绍具体的解决办法
    2013-11-11

最新评论