Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL SERVER 2008中启用字母(A、B、C、D…)的自动增量?_Sql_Sql Server_Sql Server 2008_Char_Auto Increment - Fatal编程技术网

如何在SQL SERVER 2008中启用字母(A、B、C、D…)的自动增量?

如何在SQL SERVER 2008中启用字母(A、B、C、D…)的自动增量?,sql,sql-server,sql-server-2008,char,auto-increment,Sql,Sql Server,Sql Server 2008,Char,Auto Increment,我是SQL SERVER新手。我发现了如何为列自动递增数字 CREATE TABLE Region ( RegionId int IDENTITY(1,1), RegionName varchar(50), ); 问题:如何像这样启用字母(A、B、C、D…)中的“自动增量” 正如Damien在评论中正确指出的那样,值之间可能存在差距,依赖连续的值不是一个好主意,如何添加RegionName作为计算列: ALTER TABLE Region ADD RegionName AS CHAR(Reg

我是SQL SERVER新手。我发现了如何为列自动递增数字

CREATE TABLE Region
(
RegionId int IDENTITY(1,1),
RegionName varchar(50),
);

问题:如何像这样启用字母(A、B、C、D…)中的“自动增量”


正如Damien在评论中正确指出的那样,值之间可能存在差距,依赖连续的值不是一个好主意,如何添加RegionName作为计算列:

ALTER TABLE Region
ADD RegionName AS CHAR(RegionID + 64)
这是因为“A”的ASCII值是65-因此假设您的标识列从值1开始,增量为1,那么您应该得到
CHAR(64+1)
=
CHAR(65)
-
A
,2=CHAR(66)=
B
,依此类推

当然,这只是基于这样的假设,即您不想在以后将RegionName更改为更友好的名称(如列所计算的),并且您只有一个小范围的值-例如,如果有26个以上的区域,您希望发生什么?有了我的想法之后,你会开始得到一些时髦的结果——符号,然后是小写字母等等。如果你不熟悉这个想法,请看一个例子。如果你想做一些更聪明的事情,比如开始创建名为AA、AB、AC等的区域。我建议遵循Aishvarya在评论中发布的优秀序列生成链接


无论何时使用
标识
列,您都不应在意或以任何方式依赖生成的实际数值。它应该被视为一个不透明的blob,您恰好能够将其存储在数字列中。因此,如果您在某种程度上依赖于生成的数字序列,那么即使是您的第一部分(生成数字序列)也是不正确的。这可能会有所帮助-您自己创建一个序列函数来为您执行此操作,您可以调用该函数来获得下一个值。但坦率地说,我不明白你为什么要“自动增加”这样的角色?@AllanS.Hansen,给区域命名是一项课程任务,即使对你来说没有意义human@Aishvarya,谢谢你的文章。我现在就来读,所有两个字母组合的序列生成的链接似乎都被禁用了(可能是由于时间的原因),是否还有其他引用或链接执行相同的操作?该链接对我仍然有效?我不知道你为什么问我而不是直接问Aishvarya。谢谢你的链接,我在评论中没有看到她的名字。这个答案对我来说非常好。我只需要在报表上显示一个行号作为字符a-M。回答得好。