AUTO INCREMENT NUMBER为一列

时间:2011-05-09 18:31:01

标签: sql sql-server

我想知道是否有人可以帮助我。我正在创建一个简单的脚本,我想将一个数字自动递增到一个数字为7 0的字段。

示例:00000001

这是我的脚本:它是一个小的更新脚本<​​/ p>

DECLARE @EDI NVARCHAR(55)
SET @EDI=0000000
UPDATE TESTER11111
SET @EDI=EDI=@EDI+1
WHERE ssq='education'

而不是将数字递增为00000001,00000002。 它递增为1,2,3等

我做错了什么?我如何插入那些领先的7 0?

EDI是我插入增量的列。

5 个答案:

答案 0 :(得分:6)

你做不到。就数据库而言,01与1相同。如果你不想引导零,那么当你从数据库中提取数据时,你将不得不构造一个用零填充的字符串。

修改

通常我会在应用程序中进行格式化,但有时候我必须在数据库中进行格式化。这是一个例子,在较新的版本中可能有更好的解决方案,但这就是我使用的。

SELECT REPLACE(STR(5, 8), ' ', '0')

答案 1 :(得分:3)

在表格中放置“常规”INT IDENTITY列,并有一个计算列来处理其他工作:

CREATE TABLE dbo.IDTest
( ID INT IDENTITY(1,1) PRIMARY KEY,
  FormattedID AS RIGHT('00000000' + CAST(ID AS VARCHAR(8)), 8) PERSISTED
)

现在,您的表格将包含以下值:

ID     FormattedID
  1     00000001
  2     00000002
 ..
 42     00000042
 ..
123     00000123

此计算列是持久的,例如如果需要,你也可以索引它。

答案 2 :(得分:1)

这在您的业务逻辑(php,asp,coldfusion或其他)中更好地处理。增量适用于整数,而不是字符串。否则,它必须通过整个字母表。

答案 3 :(得分:1)

让表增加(并且只存储整数),但我没有理由不考虑不继续格式化select语句;固定数字格式与业务逻辑一样多的数据

 SELECT Right(Replicate('0',8)+Convert(nvarchar(8),EDI),8)

编辑:如果您必须保存格式化的值:

DECLARE @EDI NVARCHAR(55) 
SET @EDI=0
UPDATE TESTER11111 
SET @EDI=EDI=Right(Replicate('0',8)+Convert(nvarchar(8),@EDI+1),8) 
WHERE ssq='education'

答案 4 :(得分:-1)

试试这个

UPDATE TESTER11111
SET @EDI='0000000'+''+1
WHERE ssq='education'
  

选择“0000000”++(自动编号)

     

O / P   00000001