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

请求协助编写MySQL批量重命名剧集名称的SQL替换语句

解决MySQL中剧集名称的批量格式化问题

嘿,这个需求很典型,我来帮你用SQL批量搞定!我们可以借助MySQL的字符串处理函数,精准提取季数、集数并补0,再拼接回原格式。

步骤1:先验证格式化结果(重要!)

在执行更新之前,一定要先运行查询语句确认输出的格式是否符合预期,避免误改数据:

SELECT
    name AS original_name,
    CONCAT(
        -- 提取剧集前缀(比如"Arrow")
        SUBSTRING_INDEX(name, ' - ', 1),
        ' - S',
        -- 提取季数并补0到两位(S1 → S01)
        LPAD(SUBSTRING_INDEX(SUBSTRING_INDEX(name, 'E', 1), 'S', -1), 2, '0'),
        'E',
        -- 提取集数并补0到两位(E9 → E09,E10保持不变)
        LPAD(SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' - ', 2), 'E', -1), 2, '0'),
        ' - ',
        -- 提取剧集标题后缀(比如"Year's End")
        SUBSTRING_INDEX(name, ' - ', -1)
    ) AS formatted_name
FROM shows
-- 只匹配符合"XX - SxEy - XX"格式的记录,避免修改其他数据
WHERE name REGEXP '^.+ - S[0-9]+E[0-9]+ - .+$';

步骤2:执行批量更新

如果上面的查询结果完全符合你的要求,就可以运行UPDATE语句批量修改:

UPDATE shows
SET name = CONCAT(
    SUBSTRING_INDEX(name, ' - ', 1),
    ' - S',
    LPAD(SUBSTRING_INDEX(SUBSTRING_INDEX(name, 'E', 1), 'S', -1), 2, '0'),
    'E',
    LPAD(SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' - ', 2), 'E', -1), 2, '0'),
    ' - ',
    SUBSTRING_INDEX(name, ' - ', -1)
)
WHERE name REGEXP '^.+ - S[0-9]+E[0-9]+ - .+$';

关键函数说明

  • SUBSTRING_INDEX(str, delim, count):按分隔符截取字符串,比如SUBSTRING_INDEX(name, ' - ', 1)取第一个-前的内容。
  • LPAD(str, length, padstr):向左填充字符,把季数/集数补成2位,不足的用0填充(比如"1"变成"01","10"保持"10")。
  • REGEXP:用正则表达式过滤目标记录,确保只修改符合格式的剧集名称。

注意事项

  1. 执行UPDATE前务必备份数据,或者先在测试环境验证!
  2. 如果你的表字段名不是name,记得替换成实际的字段名(比如show_title)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:57:49