mysql的replace函式都有哪些用法,你是否都知曉呢?今天,讓我帶大家花幾分鐘時間來一起看一看,記得mark!附、一張有故事的**(五)
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|+
----+----------------+--------------+-------+
7rows
inset
(0.00 sec)
需求:把"hero_title"欄位中所有的"之"換成" - "來展示,sql如下:
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|+
----------------+--------------+-------+
7rows
inset
(0.00 sec)
需求:把"hero_title"欄位中所有的"a"去掉,sql如下:
updatelol
set hero_title=replace(hero_title,『a』,』』);
mysql>
update
`lol`
set hero_title=
replace
(hero_title,
'a','')
;query ok,
2rows 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|+
----+--------------+--------------+-------+
7rows
inset
(0.00 sec)
如果我們想插入一條新記錄(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函式 字串替換
replace string expression string pattern string replacement 替換字串,接受3個引數,分別是原字串,被替代字串,替代字串。select username from user username peter pedro jerry 通過repla...
mysql replace的主從不一致
問題 資料庫遷移後,執行語句 load data local infile s replace into table s s 會出現 duplicate entry 的問題 但是在binlog只產生一條update語句。從庫的auto increment不會 1。詳細了解下 一。準備知識 inser...
函式的用法 Excel函式TREND函式的用法
trend函式是乙個線性趨勢的 函式,在已知y值 x值的條件下,x對應的y值 trend共有4個引數,三個必選引數,乙個可選引數 同樣的一組資料第四引數不同,結果也是有區別的 灰色曲線是由第四引數為false時得到的結果生成的曲線。通過斜率與截距函式我們計算出這兩條曲線的斜率與截距,可以看出,第四引...