如何修改此命令以便擁有一個標識列,該標識列具有像00000這樣的五位整數並從00001開始?SQL Server IDENTITY列
CREATE TABLE [dbo].[Company]
(
[CompanyId] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](200) NOT NULL
)
如何修改此命令以便擁有一個標識列,該標識列具有像00000這樣的五位整數並從00001開始?SQL Server IDENTITY列
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,
我永遠不會使用該解決方案自己雖然,格式沒有按不屬於數據存儲區。
你需要自己添加前導零。作爲一種解決方案,您可以添加一個名爲say「formatedID」的其他colomn,並使用來自identity列的值並使用您想要的前導零格式化的「插入觸發器」更新它。
例子:
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
我寧願使用計算列而非觸發。 –
關鍵短語是「** **如果你需要能夠呈現這樣的字符串右出SQL的」 ......這聽起來更像是表示層的關注。 – Aaronaught
您可能還想將'PERSISTED'關鍵字添加到您的計算列中,以實際將值存儲在磁盤上,從而顯着提高查詢性能(並允許在該列上編制索引) –