Sql server 如何在MSSQL中增加nvarchar类型

Sql server 如何在MSSQL中增加nvarchar类型,sql-server,Sql Server,我有一个表选项卡1,其中一列为IDofNvarchar(80)[MSSQL]。我希望有一个初始值为的变量=00100000,然后按00100001、00100002、00100003等递增。稍后使用它在循环中从此变量获取tab1.id。有人能帮我吗?我首先要说,如果你想要一个易于增加的变量,NVARCHAR并不是最好的选择;但我也假设你这样做是有原因的 也就是说,增加该值非常容易: SELECT CAST(<column_name> AS INT) + 1 FROM Tab1; 如

我有一个表选项卡1,其中一列为
ID
of
Nvarchar(80)
[MSSQL]。我希望有一个初始值为的变量=
00100000
,然后按
00100001
00100002
00100003
等递增。稍后使用它在循环中从此变量获取tab1.id。有人能帮我吗?

我首先要说,如果你想要一个易于增加的变量,
NVARCHAR
并不是最好的选择;但我也假设你这样做是有原因的

也就是说,增加该值非常容易:

SELECT CAST(<column_name> AS INT) + 1 FROM Tab1;
如果您最终希望达到覆盖这两个前导零的值,那么稍后还需要考虑到这一点。有几种方法可以做到这一点。其中最简单的是:

SELECT RIGHT('00000' + CAST(<column_name> + 1 AS NVARCHAR(80)),8);
SELECT RIGHT('00000'+CAST(+1为NVARCHAR(80)),8);

首先,我要说的是,如果您想要一个易于递增的变量,
NVARCHAR
并不是一个好办法;但我也假设你这样做是有原因的

也就是说,增加该值非常容易:

SELECT CAST(<column_name> AS INT) + 1 FROM Tab1;
如果您最终希望达到覆盖这两个前导零的值,那么稍后还需要考虑到这一点。有几种方法可以做到这一点。其中最简单的是:

SELECT RIGHT('00000' + CAST(<column_name> + 1 AS NVARCHAR(80)),8);
SELECT RIGHT('00000'+CAST(+1为NVARCHAR(80)),8);

不要这样做。请改用int-identity列。用户设计的自动增量列注定会失败。我甚至不确定像Aaron Bertrand或Martin Smith这样的传奇人物是否可以使用简单的sql编写可靠的自动增量列,而不使用标识或序列。请改用int-identity列。用户设计的自动增量列注定会失败。我甚至不确定像Aaron Bertrand或Martin Smith这样的传奇人物是否可以使用简单的sql编写可靠的自动增量列,而不使用标识或序列。这根本不安全。在同一时间执行此代码的多个用户将获得相同的数字。OP已经收到了一条关于使用
IDENTITY
列的评论,也没有提到有多少用户将同时增加这些数据(如果有的话)。我甚至一开始就说这不是一条路;但是如果不可取的话,
NVARCHAR
的增量仍然是可能的,因此我这里的唯一目标是回答OP的实际问题。我建议使用基于标识列的计算列。简单、干净、线程安全。@ATC我非常肯定地邀请您将其作为答案发布,我也希望它能被接受。这一点都不安全。在同一时间执行此代码的多个用户将获得相同的数字。OP已经收到了一条关于使用
IDENTITY
列的评论,也没有提到有多少用户将同时增加这些数据(如果有的话)。我甚至一开始就说这不是一条路;但是如果不可取的话,
NVARCHAR
的增量仍然是可能的,因此我这里的唯一目标是回答OP的实际问题。我建议使用基于标识列的计算列。简单、干净、线程安全。@ATC我非常肯定地邀请您将其作为答案发布,我也希望它能被接受。