Sql 通过将姓氏的前3个字母添加到生成的从001开始的数字序列来创建员工编号

Sql 通过将姓氏的前3个字母添加到生成的从001开始的数字序列来创建员工编号,sql,sql-server,Sql,Sql Server,我创建了这个序列: CREATE SEQUENCE Employee_Seq START WITH 1 INCREMENT BY 1 MAXVALUE 999 CYCLE; Employee表已经存在,因此我添加了一个名为Employee\u Seq的列: ALTER TABLE Employee ADD Employee_Seq INT 现在我需要填充一个名为Internal\u Employee\u No的新列,看起来像这样:ZZZ001,ADB002等等,这取决于姓氏列的接下来

我创建了这个序列:

CREATE SEQUENCE Employee_Seq
START WITH 1
INCREMENT BY 1
MAXVALUE 999
CYCLE;
Employee
表已经存在,因此我添加了一个名为
Employee\u Seq
的列:

ALTER TABLE Employee
    ADD Employee_Seq INT

现在我需要填充一个名为
Internal\u Employee\u No
的新列,看起来像这样:
ZZZ001
ADB002
等等,这取决于姓氏列的接下来3个字母以及在该表中生成的数字,该表当前为NULL

如果这是针对SQL Server,我会这样做:

  • 在表中创建一个新的
    标识
    列(不是
    序列
    ):

      ALTER TABLE dbo.Employee
          ADD EmployeeSeqID INT IDENTITY(1,1) NOT NULL;
    
  • 创建一个计算列来处理友好ID:

      ALTER TABLE dbo.Employee
          ADD Internal_Employee_No AS 
              SUBSTRING(Surname, 1, 3) + RIGHT('000' + CAST(EmployeeSeqID AS VARCHAR(3)), 3) PERSISTED;
    
因此,现在每一行都有一个
标识
值(从1开始,递增1),并且每一行还包含一列您所需格式的
内部员工号


每次添加新行时,都会分配一个新的
IDENTITY
值,并在保存行时计算该
Internal\u Employee\u No
的值。

我删除了不兼容的标记。只标记您真正使用的DBMS。这是Microsoft Server Management Studio 2018,使用的代码很有效,但我想我可能是想得太多了?我只需要将姓氏的前3个字母添加到第一行001开始的数字中,然后再添加下一行,例如abc002、bcd003等等。SMS不是RDBMS,它是一个IDE,用于SQL Server。