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() 的返回值爲數字值或字符串值,