用update 组合 replace 修改一个表内的多个字段。
有没有优化的方案。笨的方法如下:
UPDATE event
set eventname=replace(eventname,'路1','02支架')
where eventid like '005%'
UPDATE event
set eventname=replace(eventname,'路2','04支架')
where eventid like '005%'
UPDATE event
set eventname=replace(eventname,'路3','06支架')
where eventid like '005%'
UPDATE event
set eventname=replace(eventname,'路4','08支架')
where eventid like '005%'
总共路数是1~115,所有筛选时还需要加条件判断,不然路1和路100后被同时选出
你可以使用 CASE WHEN 语句优化你的 SQL 查询,可以使用以下代码来实现:
UPDATE event
SET eventname =
CASE
WHEN eventname LIKE '%路1%'
THEN replace(eventname,'路1','02支架')
WHEN eventname LIKE '%路2%'
THEN replace(eventname,'路2','04支架')
WHEN eventname LIKE '%路3%'
THEN replace(eventname,'路3','06支架')
WHEN eventname LIKE '%路4%'
THEN replace(eventname,'路4','08支架')
ELSE eventname
END
WHERE eventid LIKE '005%';
这个新的 SQL 查询使用 CASE WHEN 语句来检查每行数据的 eventname 字段中是否包含对应的子字符串,如果匹配成功,则将该字段用 replace 函数所需的参数进行替换。如果没有匹配成功,则保留原始的 eventname 值。
通过这种方式,你只需要一个 SQL 查询就可以替换所有的需要修改的字段,避免了使用多个 SQL 查询的复杂性和低效性。