You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量更新MySQL表中Name字段,在名称与数字间添加空格?

批量更新MySQL表中Name字段格式问题

当前mytab表数据

|  2 | 123 | Name2           |
|  7 | 444 | Name3           |
| 16 | 555 | Name4           |
| 17 | 443 | Name5           |
| 18 | 129 | Name6           |

期望修改效果

需要将Name字段修改为名称与数字间加空格的形式,最终效果如下:

|  2 | 123 | Name 2           |
|  7 | 444 | Name 3           |
| 16 | 555 | Name 4           |
| 17 | 443 | Name 5           |
| 18 | 129 | Name 6           |

尝试过的错误操作

  • 错误调用SPACE()函数的单个更新语句:

    update mytab set Name = 'Name Space(1) 1' where name = 'Name1';
    

    结果生成错误值:Name Space(1) 1,未正确执行SPACE()函数逻辑。

  • 子查询更新触发多行返回错误:

    update mytab set name = (select CONCAT('Name', SPACE(1)) AS Name from mytab);
    

    报错信息:

    ERROR 1242 (21000): Subquery returns more than 1 row
    
  • 添加LIMIT后触发唯一键重复冲突:

    update mytab set name = (select CONCAT('Name', SPACE(1)) AS Name from mytab limit 1);
    

    报错信息:

    ERROR 1062 (23000): Duplicate entry 'Name ' for key 'Name'
    

表结构信息

| mytab | CREATE TABLE `mytab` (
  `ID` bigint(20) NOT NULL AUTO_INCREMENT,
  `CallerID` varchar(255) NOT NULL,
  `Name` varchar(255) NOT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `CallerID` (`CallerID`),
  UNIQUE KEY `Name` (`Name`),
  UNIQUE KEY `unique_index` (`Name`,`CallerID`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci |

需求说明

目前临时解决办法是清空表、将值导出到文本修改后重新插入,现寻求正确的批量更新方法。

内容的提问来源于stack exchange,提问作者elbarna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 02:12:13