在我的 SQL Server 数据库中,我得到了这个作为我ID
的例子SSK0000001
。
我希望它在我的系统中自动递增,并且最后一个ID
例如“1”的数字(在另一个新记录之后它将成为SSK0000002
)在我的 SQL Server 数据库中更新。
我知道可以通过在数据库中设置自动增量来完成,但现在我ID
的是nchar
.
任何人都可以提供帮助将不胜感激。
在我的 SQL Server 数据库中,我得到了这个作为我ID
的例子SSK0000001
。
我希望它在我的系统中自动递增,并且最后一个ID
例如“1”的数字(在另一个新记录之后它将成为SSK0000002
)在我的 SQL Server 数据库中更新。
我知道可以通过在数据库中设置自动增量来完成,但现在我ID
的是nchar
.
任何人都可以提供帮助将不胜感激。
您可以使用基于自动增量列的计算列。应该从 sql server 2005 开始工作。
CREATE TABLE [dbo].[TEST1](
[AUTO_ID] [int] IDENTITY(1,1) NOT NULL,
[ID] AS CAST(('SSK'+replace(str([AUTO_ID],(7),(0)),' ','0')) AS NCHAR(10)) PERSISTED,
[NAME] [nvarchar](10) NULL
) ON [PRIMARY]
GO
INSERT INTO TEST1 (NAME) VALUES ('NAME1')
INSERT INTO TEST1 (NAME) VALUES ('NAME2')
INSERT INTO TEST1 (NAME) VALUES ('NAME3')
SELECT * FROM TEST1
您可以将右侧转换为 int 并递增:
declare @next int
select @next = convert( int, right( max( id ), 7 ) ) + 1
from your table
然后插入为:
insert into ... (Id, ...)
values ( 'SDK' + right( '0000000' + rtrim(ltrim( str( @next ) ) ), 7 ), ... )
但这是您可以采取的最肮脏的解决方案:
我建议你改用自动增量数据类型
我想到的第一个解决方案是
分解您的 ID,以便将 SSK 与号码分开
增加数字
然后用数字回溯 SSK