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

SQL/MySQL中仅针对7位编码删除前导0的实现方法咨询

MySQL 按规则删除7位长度编码前导0的实现

前提说明

待处理的编码字段需为字符串类型(如VARCHAR、CHAR),数值类型本身无法存储前导0,无需该操作。

核心规则

仅当编码字符长度严格等于7时,删除其前置的0;其余长度的编码原样保留。

临时查询处理(不修改原表数据)

适合提取处理后数据、不改动源表的场景,可根据实际需求选择写法:

写法1:删除所有前置0

如果需要清除7位编码开头的全部0,使用TRIM函数实现:

SELECT
  IF(CHAR_LENGTH(编码字段名) = 7, TRIM(LEADING '0' FROM 编码字段名), 编码字段名) AS 处理后编码
FROM 表名;

也可使用可扩展的CASE WHEN写法,方便后续新增其他判断规则:

SELECT
  CASE
    WHEN CHAR_LENGTH(编码字段名) = 7 THEN TRIM(LEADING '0' FROM 编码字段名)
    ELSE 编码字段名
  END AS 处理后编码
FROM 表名;

写法2:仅删除开头第一个0

如果业务场景中7位编码仅存在1个前置0,只需删除第一个字符的0即可,可使用SUBSTRING实现:

SELECT
  IF(CHAR_LENGTH(编码字段名) = 7 AND LEFT(编码字段名, 1) = '0', SUBSTRING(编码字段名, 2), 编码字段名) AS 处理后编码
FROM 表名;

永久更新原表数据

需要直接修改表内符合条件的编码时使用,执行前务必备份对应数据:

对应删除所有前置0的更新语句

UPDATE 表名
SET 编码字段名 = TRIM(LEADING '0' FROM 编码字段名)
WHERE CHAR_LENGTH(编码字段名) = 7;

对应仅删除开头第一个0的更新语句

UPDATE 表名
SET 编码字段名 = SUBSTRING(编码字段名, 2)
WHERE CHAR_LENGTH(编码字段名) = 7 AND LEFT(编码字段名, 1) = '0';

规则验证示例

  • 7位编码0100396:处理后得到100396,符合要求
  • 6位编码010611:长度不符合条件,原样返回010611
  • 7位无前置0的编码1234567:无前置0可删除,原样返回
  • 7位多前置0编码0012345:删除所有前置0的写法会输出12345,仅删第一个0的写法会输出012345,可按需选择

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 15:24:03