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。