李红涛 2019-08-13 14:59 采纳率: 0%
浏览 2789

SQL 用UPDATE 组合replace 修改同一列多个字段。

用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后被同时选出

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 05:31
    关注

    你可以使用 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 查询的复杂性和低效性。

    评论

报告相同问题?

悬赏问题

  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿