SQL Server IDENTITY column



我如何修改这个命令,以便有一个标识列,其中有五个数字整数,如00000,并从00001开始?

CREATE TABLE [dbo].[Company]
(
  [CompanyId] [bigint] IDENTITY(1,1) NOT NULL,
  [Name] [nvarchar](200) NOT NULL
)

整数本身没有前导0。在将整数转换为字符串以供显示时,需要处理格式问题。

如果您真的,真的需要能够在SQL中显示这样的字符串,您可以使用计算列来实现:

CREATE TABLE [dbo].[Company]( 
  [CompanyId] [bigint] IDENTITY(1,1) NOT NULL,
  [FormattedCompanyId] AS RIGHT('0000'+ CONVERT(VARCHAR,Num),5),
  [Name] nvarchar NOT NULL,

我自己永远不会使用这个解决方案,格式不属于数据存储。

您需要自己添加前导零。作为一种解决方案,您可以添加一个名为"formatatedid"的其他列,并使用"插入后触发器"更新它,其中包含标识列的值,并使用您想要的前导零进行格式化。

的例子:

CREATE TABLE [dbo].[Company]
(
  [CompanyId] [bigint] IDENTITY(1,1) NOT NULL,
  [FormattedID] [VARCHAR(20)],
  [Name] [nvarchar](200) NOT NULL
)
CREATE TRIGGER ON [dbo].[Company]
FOR INSERT
AS
BEGIN
  UPDATE [dbo].[Company]
  FROM inserted
  SET FormattedID = RIGHT('0000'+ CONVERT(VARCHAR, [dbo].[Company].CompanyId),5)
  WHERE dbo.Company.CompanyId = inserted.CompanyId
END

最新更新