如何修改此命令以便拥有一个标识列,该标识列具有像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'关键字添加到您的计算列中,以实际将值存储在磁盘上,从而显着提高查询性能(并允许在该列上编制索引) –