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

如何创建支持字母数字格式商铺编号的Shops_Table数据表?

商铺编号数据表需求适配分析

我正在创建名为Shops_Table的数据表,用于接收商铺店主的注册信息。部分商铺采用数字(INT)格式编号,例如商铺编号1、2……上千号;另有部分商铺采用字母数字(Char)格式编号,例如商铺编号1a、1b……上千号。我在Stack Overflow上找到如下代码,请问该代码能否满足需求?

DECLARE @Base10ToBase36 AS TABLE (
ID      TINYINT NOT NULL IDENTITY(0,1) PRIMARY KEY,
Symbol  CHAR(1) NOT NULL CHECK(Symbol LIKE '[0-9,A-Z]')
)
INSERT INTO @Base10ToBase36(Symbol)
VALUES  ('0'), ('1'), ('2'), ('3'), ('4'), ('5'), ('6'), ('7'), ('8'), ('9'),
('A'), ('B'), ('C'), ('D'), ('E'), ('F'), ('G'), ('H'), ('I'), ('J'),
('K'), ('L'), ('M'), ('N'), ('O'), ('P'), ('Q'), ('R'), ('S'), ('T'),
('U'), ('V'), ('W'), ('X'), ('Y'), ('Z')
SELECT  TOP (1)
pos1.ID * 36 + pos0.ID AS Base10Number,
pos1.Symbol,
Pos0.Symbol,
CONCAT(pos1.Symbol, Pos0.Symbol) AS Base36
FROM    @Base10ToBase36 AS pos0
CROSS JOIN @Base10ToBase36 AS pos1
ORDER BY NEWID()    -- 随机生成

结论:这段代码无法直接满足需求,原因如下

  • 代码核心是随机生成单个两位Base36格式编号,而非创建Shops_Table的存储结构,不能解决"同时接收两种格式商铺编号"的核心需求。
  • 代码生成的编号范围为00到ZZ(对应十进制0-1295),虽覆盖"上千号"的数量要求,但仅能生成字母数字混合的两位编号,无法单独生成纯数字格式编号,也无法适配双格式并存的存储场景。

适配需求的建议

若要创建支持双格式编号的Shops_Table,应将商铺编号字段定义为**VARCHAR(10)**(长度可根据实际编号长度调整):

  • 该类型既可以存储纯数字编号(以字符串形式保存,可按需转换为INT),也能兼容字母数字混合的编号格式。
  • 如果需要生成字母数字混合编号,这段代码可作为两位Base36编号的生成工具;若需更长编号,需调整交叉连接逻辑扩展位数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:48:17