基于字母顺序的编号自增实现方法

在编号场景中,常需按固定元素(如字母、成员、类型等)循环生成序号。

本文以 “字母 A-Z 循环自增” 为例,详解如何通过 “ 配置表 + 触发器 ” 实现项目编码的自动化生成,适用于项目管理、订单编号等场景。

1、需求简介

以伙伴云「项目概览表」为例,需自动生成标准化项目编码,格式为:NO + 立项日期(年月日) + 4 位数字序号 + 字母后缀

  • 数字序号:从 0001 开始连续自增;
  • 字母后缀:按 A-Z 顺序循环(第 1 个为 A,第 26 个为 Z,第 27 个重回 A)。

示例:

  • 第 1 个项目:NO202503160001A
  • 第 2 个项目:NO202503160002B
  • 第 26 个项目:NO202503160026Z
  • 第 27 个项目:NO202503160027A

已知【项目概览表】结构如下图:

img

2、基础需求:从 A 和 0001 开始自增

2.1 需求&方案原理

需求:首次使用系统时,编码从 “NO + 当日日期 + 0001+A” 起,按规则递增。

实现原理:通过配置表存储字母与编号的对应关系,再用触发器计算当前项目对应的字母和数字序号,自动拼接编码。

2.2 配置步骤

2.2.1 创建字母配置表

新建一张配置表,记录 26 个字母及对应编号。

img

2.2.2 配置触发器

img

触发器用于自动计算并生成编码,核心逻辑如下:

步骤 1:统计项目总数

临时变量「总数」:统计当前表格中已有的项目总数(记为 N)。

步骤 2:计算字母编号

临时变量「字母编号」:根据总数 N 计算对应的字母编号:

  • 若 N < 27:直接取 N(如 N=0→编号 1=A,N=1→编号 2=B);
  • 若 N ≥ 27:计算 N 除以 26 的余数,余数为 0 则取 26(Z),余数非 0 则取余数(如 N=27→27÷26 余 1→编号 2=B)。

步骤 3:匹配字母

临时变量「字母」:通过「字母编号」从配置表中查询对应的字母(如编号 1→A)。

步骤 4:拼接编码

项目编码 : "NO" + 立项日期(格式:年月日) + 4 位数字序号(N+1,补 0 至 4 位,如 N=0→0001) + 字母。

3、进阶需求:从指定数字和字母开始自增

3.1 需求&方案原理

需求:若历史项目最大编码为 “NO202507010202K”,需新项目从数字 203、字母 L 开始自增(首个新项目为 NO202507020203L)。

实现原理:在基础方案上调整统计范围和初始值,确保数字和字母从指定位置开始递增。

3.2 配置触发器

img

触发器触发部分不变,仅修改执行操作:

步骤 1:调整数字序号

临时变量「数字序号」:新编号的数字从 1 开始自增,再加上历史最大数字(202),即 1+202=203(后续依次 + 1)。

步骤 2:调整字母初始值

  • 临时变量「指定字母编号」:查询初始字母 L 的编号(L=12),并减 1(12-1=11);
  • 临时变量「归零统计数据总数(新总数)」:仅统计采用新编码机制的项目总数(记为 M)。

步骤 3:计算新字母编号

临时变量「编号」:计算新的字母编号,根据 M+11 计算:

  • 若(M+11)< 27:直接取 M+11(如 M=0→0+11=11→编号 12=L);
  • 若(M+11)≥ 27:计算(M+11)除以 26 的余数,余数为 0 则取 26(Z),余数非 0 则取余数。

步骤 4:拼接编码

项目编码 : "NO" + 立项日期 + 4 位数字序号(203,后续依次 + 1) + 对应字母。


通过「配置表 + 触发器」的组合,可灵活实现 “数字自增 + 字母循环” 的编码规则:

  • 基础方案适用于从初始状态开始的编码生成;
  • 进阶方案可适配历史数据延续,从指定数字和字母开始递增,满足多样化编号需求。
2025-08-08 更新
30 次查看
0