SQL Server - 创建自定义自增字段

SQL Server - Create a custom auto-increment field

我正在尝试在 sql 中生成自定义自动递增功能。我的自定义自动增量 ID 应该如下所示...

S1501.001

"S"为供应商名称首字母。

“15”是今年的最后 2 位数字。

“01”是今天的月份

“。”永远在那里

“001”是我的增量器。

计数器会像下面这样继续下去

S1501.001
S1501.002
S1501.003
S1501.004

首先,我必须找到 "S1501." 并找到末尾数字最高的 ID。我可以创建一个新的 "S1501.005"。我该怎么做?

我做了一些但没有奏效。

SELECT TOP 1 (SELECT SUBSTRING('S1501.001', 7,3)),* 
FROM LG_001_01_SERILOTN 
WHERE  CODE LIKE SUBSTRING('S1501.001', 1,6)+'%'
ORDER BY (SELECT SUBSTRING('S1501.001', 7,3)) DESC

最好的解决办法是使用

  • 一个ID INT IDENTITY(1,1)列获取SQL服务器来处理你的数值的自动递增
  • 一个计算的、持久的列,用于将该数值转换为您需要的值

所以试试这个:

CREATE TABLE dbo.tblCompany
  (ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
   CompanyID AS 'S1501.' + RIGHT('000' + CAST(ID AS VARCHAR(3)), 3) PERSISTED,
   .... your other columns here....
  )

现在,每次在 tblCompany 中插入一行而不指定 IDCompanyID 的值时:

INSERT INTO dbo.tblCompany(Col1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)

然后 SQL 服务器将 自动安全地 增加您的 ID 值,并且 CompanyID 将包含像 S1501.001 这样的值, S1501.002,......等等——自动、安全、可靠、无重复。