Столбец SQL Server IDENTITY - PullRequest
       2

Столбец SQL Server IDENTITY

1 голос
/ 20 августа 2011

Как я могу изменить эту команду, чтобы столбец идентификаторов имел пять цифр, например, 00000, и начинался с 00001?

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

Ответы [ 2 ]

6 голосов
/ 20 августа 2011

Целое число само по себе не имеет начального 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,

Я бы никогда не использовал это решение сам, хотя форматирование не относится к хранилищу данных.

0 голосов
/ 20 августа 2011

Вам нужно добавить ведущие нули самостоятельно.В качестве решения вы можете добавить другой столбец с именем скажем «formatedID» и обновить его «триггером вставки» со значением из столбца идентификаторов и отформатировать с ведущими нулями, которые вы хотите.

Пример:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...