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

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