生成顺序字母数字ID

时间:2014-02-27 14:14:06

标签: c# sql-server-2008

您好
我在我的项目中要求生成顺序ID,即从A1001, A1002开始,在10,000之后,它应该从B1001, B1002,...B10000 ,C1001..开始,依此类推。我通过下面的数据库表从数据库表中获取最大ID SQL

  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#以及更多..但无法解决问题。

1 个答案:

答案 0 :(得分:1)

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

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

int value = int.Parse(id.Substring(1)); // 1000, 1001 ...
char prefix = id[0]; // A,B ...

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

prefix = (char)(prefix + 1); // A -> B ...

确保在增加值之前检查“Z”!

要汇总您可以使用的新ID:

string newid = prefix + value.ToString("0000");

您需要考虑的事项:

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

我希望这有帮助!