首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成顺序字母数字ID

生成顺序字母数字ID
EN

Stack Overflow用户
提问于 2014-02-27 14:14:05
回答 1查看 1.3K关注 0票数 2

我的项目中有一个要求生成顺序ID,即从A1001, A1002开始,在10,000之后,它应该从B1001, B1002,...B10000 ,C1001..开始,等等。使用下面的SQL从数据库表中获取最大ID

代码语言:javascript
复制
  SELECT TOP 1 [ID_COLUMN] 
  FROM [NAME_OF_TABLE] 
  ORDER BY [ID_COLUMN] DESC

然后必须从我的ASPX页面后面的代码中生成3个新的顺序ID,然后再将它们保存到Table中。我仔细研究了各种不同的可能性,但没有得到真正想要的东西。我尝试了下面的链接>Auto Generate alphanumeric Unique Id with C#和更多..。但无法解决问题。

EN

回答 1

Stack Overflow用户

发布于 2014-02-27 14:37:32

如果以字符串的形式检索当前值,则可以访问Substring方法来提取数字部分。然后,您可以使用int.Parse在增量和检查其新值之前将数值部分转换为值。

若要提取数字值和字符前缀,假设当前最大值存储在“id”中:

代码语言:javascript
复制
int value = int.Parse(id.Substring(1)); // 1000, 1001 ...
char prefix = id[0]; // A,B ...

要将前缀从A增加到B等,可以使用以下代码:

代码语言:javascript
复制
prefix = (char)(prefix + 1); // A -> B ...

只需确保您检查"Z“之前,增加价值!

要组装新的id,可以使用:

代码语言:javascript
复制
string newid = prefix + value.ToString("0000");

你需要考虑的事情:

  • 句柄从空表返回的空(空/空/ DBNull.Value)值(用A1001替换)
  • 当您通过Z10000时会发生什么?
  • 读取当前最大值、生成三个新值并将其写回应该在一个数据库事务中完成(搜索TransactionScope),否则如果网站流量增加,将出现问题,因为有几个请求将尝试同时生成新值。

我希望这能帮到你!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22071108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档