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