mysql 高级用法(MySQL实现replace函数的几种实用场景)
mysql 高级用法
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实用场景内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://blog.csdn.net/qq_39390545/article/details/108435109
- mysql中数据类型的学习体会(MySQL 实现lastInfdexOf的功能案例)
- mysql 索引怎么实现(Mysql中索引和约束的示例语句)
- mysql有哪些约束(MySQL完整性约束的定义与实例教程)
- docker怎样安装mysql8(docker-compose安装db2数据库操作)
- 查看mysql支持的字符集(不可忽视的MySQL字符集)
- mysql重复插入数据教程(Mysql避免重复插入数据的4种方式)
- mysql查询count很慢(MySQL COUNT函数的使用与优化)
- mysql 命令与sqlserver的区别大么(MySQL系列之执行SQL 语句时发生了什么?)
- MySQL定时任务(EVENT事件)如何配置详解(MySQL定时任务EVENT事件如何配置详解)
- mysqlupdate语句(MySQL将select结果执行update的实例教程)
- mysql5.7.20非安装版教程(MySQL5.5 部署的一个问题)
- mysql8.0详解(MySQL 8.0 的 5 个新特性,太实用了!)
- mysql多行数据之和(详解MySQL的数据行和行溢出机制)
- mysql缓存和redis查询效率(浅谈MySQL与redis缓存的同步方案)
- mysql怎么设置存储记录(MySQL 的一行记录是怎么存储的?)
- mysql索引b+树和b树(MySQL使用B+Tree当索引的优势有哪些)
- 文明6金币太少怎么办 文明6无限刷钱教程(文明6金币太少怎么办)
- 开国中将,王牌军63军首任政委,两个连襟一个上将一个少将传为佳话(王牌军63军首任政委)
- 臭名昭著的731部队最高负责人 石井四郎(臭名昭著的731部队最高负责人)
- 王牌部队,你看的剧情我看的时尚(你看的剧情我看的时尚)
- 被鉴定的古董价值300万 当心,你可能遇到诈骗了(被鉴定的古董价值300万)
- 英语难学吗(初中英语难学吗)
热门推荐
- ASP.NET抓取网页内容
- python接口自动化接口依赖(python接口自动化十六--参数关联接口后传详解)
- php如何继承多个类(PHP面向对象程序设计子类扩展父类子类重新载入父类操作详解)
- python3 怎么查看函数用法(Python3 max函数基础用法)
- 深入理解php 变量(不常用但很实用的PHP预定义变量分析)
- sqlserver代理无法启动错误1607(SQL Server代理:理解SQL代理错误日志处理方法)
- dedecms悬浮导航(DEDECMS开启绝对地址PC端跳转到静态手机端实现方法)
- 什么是mongodb 固定集合
- 新手nginx反向代理问题(详解Nginx proxy_pass的一个/斜杠引发的血案)
- 如何实现让dede三级栏目数据调用(dede调取三级栏目名及栏目下的内容列表的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9