【发布时间】:2021-09-16 00:47:50
【问题描述】:
我在 SQL Server 数据库中有一个 Student 表,如下所示:
CREATE TABLE [dbo].[Student] (
[Id] INT NOT NULL IDENTITY,
[Name] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
我希望Id 属性为字母数字,并为新条目自动递增。 我希望Id 成为S<number>,然后是S<number+1> 等等。
我尝试分两步解决这个问题:
(i) 我首先尝试通过这样做使Id 成为自动递增属性:
然后我按下“更新”:
然后我再次更新,它把我带到了这张桌子:
CREATE TABLE [dbo].[Student] (
[Id] INT NOT NULL IDENTITY,
[Name] NVARCHAR (50) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
我不认为 Id 是一个自动递增的值。如何从以下界面使其自动递增和字母数字:
【问题讨论】:
-
所以你想prefix一个带有字母的递增整数?然后使用计算列。
-
ALTER TABLE Student ADD MyId AS CONCAT('S', Id) -
你真的应该重新考虑改变你的需求。总是在开头使用“S”没有多大意义。你只是让自己的事情变得更加复杂......出于什么目的?
-
这仍然只是一个带有填充零的“S”前缀。您可以在表示层执行此操作,并在数据库中有整数。除非您有 A0、A1...AZ、B0、B1...BZ...Z0...ZZ,否则它并不是真正的字母数字。
标签: sql sql-server tsql