MySQL實(shí)現(xiàn)replace函數(shù)的幾種實(shí)用場(chǎng)景
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)
使用場(chǎng)景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)
使用場(chǎng)景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)
使用場(chǎng)景3 – (插入或替換:REPLACE INTO)
如果我們想插入一條新記錄(INSERT),但如果記錄已經(jīng)存在,就先刪除原記錄,再插入新記錄。
需求場(chǎ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í)用場(chǎng)景的文章就介紹到這了,更多相關(guān)MySQL replace實(shí)用場(chǎng)景內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信