前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL:replace函数的几种实用场景

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

作者头像
陈哈哈
发布2021-10-13 11:52:57
6740
发布2021-10-13 11:52:57
举报
文章被收录于专栏:MySQL入坑记MySQL入坑记

MySQL的Replace函数都有哪些用法,你是否都知晓呢?今天,让我带大家花几分钟时间来一起看一看,记得Mark!

目录

REPLACE语法

REPLACE(String,from_str,to_str)

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

操作实例

测试表数据如下:

代码语言:javascript
复制
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;
代码语言:javascript
复制
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’,’’);

代码语言:javascript
复制
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
代码语言:javascript
复制
-- 去掉后在查询:
+----+--------------+--------------+-------+
| 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设置自增即可。

代码语言:javascript
复制
-- 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执行,业务有特殊需求除外。

附、一张有故事的照片(五)

在这里插入图片描述
在这里插入图片描述

看到这张照片,你的第一反应是什么? 网友评价: 这张照片,第一眼我就觉得仿佛看到一个历经风霜的老人,他似乎受过许多磨难,或许他也曾反抗过,可直到今日,身上的枷锁还不曾卸下,所以他开始释然,心灵的自由便是真的自由。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • REPLACE语法
  • 操作实例
    • 使用场景1 – (Query语句):
      • 使用场景2 – (update语句):
        • 使用场景3 – (插入或替换:REPLACE INTO)
        • 附、一张有故事的照片(五)
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档