MySQL實現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實用場景內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章: