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

MySQL如何在INSERT语句中实现字符串每隔4位插入分隔符

不同数据库下的实现方案

你要求必须在INSERT语句内完成格式化,且输入字符串长度固定为17,直接按位置截取拼接是最简单高效的方案,输出长度刚好为21,完全适配varchar(21)的字段要求:

  • MySQL 实现
INSERT INTO `table` (field) VALUES (
  CONCAT(
    SUBSTRING('AAAAAAAAAAAAAAAAA', 1, 4), '-',
    SUBSTRING('AAAAAAAAAAAAAAAAA', 5, 4), '-',
    SUBSTRING('AAAAAAAAAAAAAAAAA', 9, 4), '-',
    SUBSTRING('AAAAAAAAAAAAAAAAA', 13, 4), '-',
    SUBSTRING('AAAAAAAAAAAAAAAAA', 17, 1)
  )
);
  • PostgreSQL 实现
INSERT INTO "table" (field) VALUES (
  SUBSTRING('AAAAAAAAAAAAAAAAA' FROM 1 FOR 4) || '-' ||
  SUBSTRING('AAAAAAAAAAAAAAAAA' FROM 5 FOR 4) || '-' ||
  SUBSTRING('AAAAAAAAAAAAAAAAA' FROM 9 FOR 4) || '-' ||
  SUBSTRING('AAAAAAAAAAAAAAAAA' FROM 13 FOR 4) || '-' ||
  SUBSTRING('AAAAAAAAAAAAAAAAA' FROM 17 FOR 1)
);
  • SQL Server 实现
INSERT INTO [table] (field) VALUES (
  SUBSTRING('AAAAAAAAAAAAAAAAA', 1, 4) + '-' +
  SUBSTRING('AAAAAAAAAAAAAAAAA', 5, 4) + '-' +
  SUBSTRING('AAAAAAAAAAAAAAAAA', 9, 4) + '-' +
  SUBSTRING('AAAAAAAAAAAAAAAAA', 13, 4) + '-' +
  SUBSTRING('AAAAAAAAAAAAAAAAA', 17, 1)
);
  • Oracle 实现
INSERT INTO "TABLE" (field) VALUES (
  SUBSTR('AAAAAAAAAAAAAAAAA', 1, 4) || '-' ||
  SUBSTR('AAAAAAAAAAAAAAAAA', 5, 4) || '-' ||
  SUBSTR('AAAAAAAAAAAAAAAAA', 9, 4) || '-' ||
  SUBSTR('AAAAAAAAAAAAAAAAA', 13, 4) || '-' ||
  SUBSTR('AAAAAAAAAAAAAAAAA', 17, 1)
);

如果你后续需要适配非固定长度的字符串,也可以用正则替换简化写法,比如MySQL中可以用REGEXP_REPLACE(你的字符串, '(.{4})', '\\1-'),最后再用TRIM(TRAILING '-' FROM 处理后的字符串)去掉末尾多余的分隔符即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:06:01