REPLACE語法
REPLACE(String,from_str,to_str)
即:將String中所有出現(xiàn)的from_str替換為to_str,這里的from_str不支持正則匹配。
操作實(shí)例
測(cè)試表數(shù)據(jù)如下:
mysql> select * from `LOL`;
+----+----------------+--------------+-------+
| id | hero_title | hero_name | price |
+----+----------------+--------------+-------+
| 1 | 刀鋒之影 | 泰隆 | 6300 |
| 2 | 迅捷斥候 | 提莫 | 6300 |
| 3 | 光輝女郎AA | 拉克絲 | 1350 |
| 4 | 發(fā)條A魔靈A | 奧莉安娜 | 6300 |
| 5 | 至高之拳 | 李青 | 6300 |
| 6 | 無極劍圣 | 易 | 450 |
| 7 | 疾風(fēng)劍豪 | 亞索 | 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 |
| 發(fā)條A魔靈A | 奧莉安娜 | 6300 |
| 至高 - 拳 | 李青 | 6300 |
| 無極劍圣 | 易 | 450 |
| 疾風(fēng)劍豪 | 亞索 | 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 | 發(fā)條魔靈 | 奧莉安娜 | 6300 |
| 5 | 至高之拳 | 李青 | 6300 |
| 6 | 無極劍圣 | 易 | 450 |
| 7 | 疾風(fēng)劍豪 | 亞索 | 6300 |
+----+--------------+--------------+-------+
7 rows in set (0.00 sec)
使用場景3 – (插入或替換:REPLACE INTO)
如果我們想插入一條新記錄(INSERT),但如果記錄已經(jīng)存在,就先刪除原記錄,再插入新記錄。
需求場景:
這張表存的每個(gè)客戶最近一次交易訂單信息,要求保證單個(gè)用戶數(shù)據(jù)不重復(fù)錄入,且執(zhí)行效率最高,與數(shù)據(jù)庫交互最少,支撐數(shù)據(jù)庫的高可用。
此時(shí),可以使用"REPLACE INTO"語句,這樣就不必先查詢,再?zèng)Q定是否先刪除再插入。
- "REPLACE INTO"語句是基于唯一索引或主鍵來判斷唯一(是否存在)的。
- "REPLACE INTO"語句是基于唯一索引或主鍵來判斷唯一(是否存在)的。
- "REPLACE INTO"語句是基于唯一索引或主鍵來判斷唯一(是否存在)的。
注意事項(xiàng):如下SQL所示,需要在username字段上建立唯一索引(Unique),transId設(shè)置自增即可。
-- 20點(diǎn)充值
REPLACE INTO last_transaction (transId,username,amount,trans_time,remark)
VALUES (null, 'chenhaha', 30, '2020-06-11 20:00:20', '會(huì)員充值');
-- 21點(diǎn)買皮膚
REPLACE INTO last_transaction (transId,username,amount,trans_time,remark)
VALUES (null, 'chenhaha', 100, '2020-06-11 21:00:00', '購買盲僧至高之拳皮膚');
若username='chenhaha'的記錄不存在,REPLACE語句將插入新記錄(首次充值),否則,當(dāng)前username='chenhaha'的記錄將被刪除,然后再插入新記錄。
id不要給具體值,不然會(huì)影響SQL執(zhí)行,業(yè)務(wù)有特殊需求除外。
到此這篇關(guān)于MySQL實(shí)現(xiàn)replace函數(shù)的幾種實(shí)用場景的文章就介紹到這了,更多相關(guān)MySQL replace實(shí)用場景內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- mysql 替換字段部分內(nèi)容及mysql 替換函數(shù)replace()
- MySQL使用Replace操作時(shí)造成數(shù)據(jù)丟失的問題解決
- Mysql中replace與replace into的用法講解
- mysql 的replace into實(shí)例詳解
- MySQL中使用replace、regexp進(jìn)行正則表達(dá)式替換的用法分析
- mysql中使用replace替換某字段的部分內(nèi)容
- MySQL中replace into語句的用法詳解
- 淺析MySQL replace into 的用法
- MYSQL 批量替換之replace語法的使用詳解