mysql 查詢指定id 並判斷是不是包含指定的 字符串 並替換 字符串

mysql 查詢指定id 並判斷是不是包含指定的 字符串 並替換 字符串:

原始數據:
1 東,南
2 南,北
3 紅中
4 西,北
5 紅,東
運行:
update z_test set z_name = REPLACE (z_name, IF(z_name REGEXP "東" ,"東",IF(z_name REGEXP "紅" ,"紅","")),"厲害了") where  z_id in (
 select a.z_id from (select z_id from z_test )a

結果:
1 厲害了,南
2 南,北
3 厲害了中
4 西,北
5 紅,厲害了


重置數據:

再來測試一遍

運行:
update z_test set z_name = REPLACE (z_name, IF(z_name REGEXP "南" ,"南",IF(z_name REGEXP "北" ,"北","")),"單向替換") where  z_id in (
 select a.z_id from (select z_id from z_test )a
)
結果:
1 東,單向替換
2 單向替換,北
3 紅中
4 西,單向替換
5 紅,東

已經確定,在判斷第一個字符串的時候,不會去判斷第二個,導致第二個沒有過濾掉,如果需要全部替換多執行幾次即可;

ps: 

 1,select a.z_id from (select z_id from z_test )a 這個語句, 由於在mysql中不能先select出同一表中的某些值,再update這個表(在同一語句中,強行執行會報You can't specify target table for update in FROM clause錯誤) ,故需要加別名  以區別;

2,IF(expr1,expr2,expr3)解釋:如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),則 IF()的返回值爲expr2; 否則返回值則爲 expr3。IF() 的返回值爲數字值或字符串值,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章