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| +----+----------------+--------------+-------+ 7rowsinset(0.00sec)
使用场景1–(Query语句):
需求:把"hero_title"字段中所有的"之"换成"-"来展示,SQL如下:
SELECTREPLACE(hero_title,'之','-')asrepl_title,hero_name,pricefromLOL; mysql>SELECTREPLACE(hero_title,'之','-')asrepl_title,hero_name,pricefrom`LOL`; +----------------+--------------+-------+ |repl_title|hero_name|price| +----------------+--------------+-------+ |刀锋-影|泰隆|6300| |迅捷斥候|提莫|6300| |光辉女郎AA|拉克丝|1350| |发条A魔灵A|奥莉安娜|6300| |至高-拳|李青|6300| |无极剑圣|易|450| |疾风剑豪|亚索|6300| +----------------+--------------+-------+ 7rowsinset(0.00sec)
使用场景2–(update语句):
需求:把"hero_title"字段中所有的"A"去掉,SQL如下:
UPDATELOLSEThero_title=REPLACE(hero_title,‘A','');
mysql>UPDATE`LOL`SEThero_title=REPLACE(hero_title,'A',''); QueryOK,2rowsaffected(0.05sec) Rowsmatched:7Changed:2Warnings:0
--去掉后在查询: +----+--------------+--------------+-------+ |id|hero_title|hero_name|price| +----+--------------+--------------+-------+ |1|刀锋之影|泰隆|6300| |2|迅捷斥候|提莫|6300| |3|光辉女郎|拉克丝|1350| |4|发条魔灵|奥莉安娜|6300| |5|至高之拳|李青|6300| |6|无极剑圣|易|450| |7|疾风剑豪|亚索|6300| +----+--------------+--------------+-------+ 7rowsinset(0.00sec)
使用场景3–(插入或替换:REPLACEINTO)
如果我们想插入一条新记录(INSERT),但如果记录已经存在,就先删除原记录,再插入新记录。
需求场景:
这张表存的每个客户最近一次交易订单信息,要求保证单个用户数据不重复录入,且执行效率最高,与数据库交互最少,支撑数据库的高可用。
此时,可以使用"REPLACEINTO"语句,这样就不必先查询,再决定是否先删除再插入。
- "REPLACEINTO"语句是基于唯一索引或主键来判断唯一(是否存在)的。
- "REPLACEINTO"语句是基于唯一索引或主键来判断唯一(是否存在)的。
- "REPLACEINTO"语句是基于唯一索引或主键来判断唯一(是否存在)的。
注意事项:如下SQL所示,需要在username字段上建立唯一索引(Unique),transId设置自增即可。
--20点充值 REPLACEINTOlast_transaction(transId,username,amount,trans_time,remark) VALUES(null,'chenhaha',30,'2020-06-1120:00:20','会员充值'); --21点买皮肤 REPLACEINTOlast_transaction(transId,username,amount,trans_time,remark) VALUES(null,'chenhaha',100,'2020-06-1121:00:00','购买盲僧至高之拳皮肤');
若username='chenhaha'的记录不存在,REPLACE语句将插入新记录(首次充值),否则,当前username='chenhaha'的记录将被删除,然后再插入新记录。
id不要给具体值,不然会影响SQL执行,业务有特殊需求除外。
到此这篇关于MySQL实现replace函数的几种实用场景的文章就介绍到这了,更多相关MySQLreplace实用场景内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。