SQL Server IDENTITY列

时间:2011-08-20 18:12:03

标签: sql sql-server sql-server-2008

如何修改此命令以使标识列具有五位数字整数,如00000并从00001开始?

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

2 个答案:

答案 0 :(得分:6)

整数本身没有任何前导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,

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

答案 1 :(得分:0)

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

示例:

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