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

如何批量修改MySQL数据表整列数据为指定字符串格式

MySQL批量转换指定列字符串格式方案

你的数据是固定以下划线分隔的4段结构,直接用MySQL内置的字符串函数即可完成批量转换,不需要额外写脚本处理。

第一步:先执行查询校验转换结果

先把转换后的值查出来核对,避免直接更新出错。把下面语句里的your_table替换成你的实际表名,Testtag替换成你的实际列名:

SELECT
  Testtag AS original_value,
  CONCAT(
    SUBSTRING_INDEX(SUBSTRING_INDEX(Testtag, '_', 3), '_', -1),
    '.',
    SUBSTRING_INDEX(Testtag, '_', -1)
  ) AS target_value
FROM your_table
WHERE Testtag LIKE 'SG\_QRA\_%';

语句逻辑说明:

  • 内层SUBSTRING_INDEX(Testtag, '_', 3) 截取原字符串前3段下划线分隔的内容,例如SG_QRA_SGBAKE_0012会被截成SG_QRA_SGBAKE
  • 外层套SUBSTRING_INDEX(..., '_', -1) 取上一步结果里最后一段下划线后的内容,也就是你需要的业务标识部分,例如SGBAKE
  • SUBSTRING_INDEX(Testtag, '_', -1) 直接取原字符串最后一段下划线后的数字编号部分,例如0012
  • 用CONCAT把业务标识、.、数字编号拼接,就得到目标格式的值
  • WHERE条件过滤出所有符合SG_QRA_开头的待修改数据,自动跳过不需要修改的行(比如你样例里的Testtag表头值),注意LIKE里的下划线要加转义符\,因为下划线在LIKE语法里是匹配单个字符的通配符。

核对查询返回的target_value和你预期的结果完全一致后,再执行更新。

第二步:执行批量更新

UPDATE your_table
SET Testtag = CONCAT(
    SUBSTRING_INDEX(SUBSTRING_INDEX(Testtag, '_', 3), '_', -1),
    '.',
    SUBSTRING_INDEX(Testtag, '_', -1)
)
WHERE Testtag LIKE 'SG\_QRA\_%';

注意事项

  • 执行更新前务必备份对应表的数据,避免误操作导致数据丢失
  • 如果表中存在格式不满足X_X_X_X四段下划线分隔的异常值,先单独排查处理,避免转换结果错误
  • 建议在测试环境先验证语句执行效果,再到生产环境执行

内容的提问来源于stack exchange,提问作者Gracella Q Sumarlin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:06:24