6

我正在尝试使用 ZEROFILL 添加一个 auto_increment 主键,最大大小为六。

所以它输出:

000001
000002 etc...

但是,我真的很难实现这一目标并且找不到答案。如何在 SQL Server Management Studio 中设置此列类型?

谢谢

4

4 回答 4

9

您不能使用 SQL Server 中的整数字段来执行此操作(我也不建议使用 Varchar)。

让 SQL Server 将字段存储为标识,然后(假设这是为了显示)在选择数据时格式化数据,如下所示:

SELECT RIGHT('000000' + CONVERT(VARCHAR(6),ID), 6) FROM Table
于 2013-02-27T13:44:36.727 回答
2

你想要达到的目标是不可能的。显示格式是在表示层而不是在数据库中完成的。您需要将值与值的表示分开。这两个值1000001是相同的。

如果要返回格式化的内容,则必须将值作为字符串返回。只需将其转换为字符串,在开头添加多个零,然后保留最左边的n 个字符。

于 2013-02-27T13:52:03.633 回答
1
SELECT FORMAT(2, N'000000')
--OR
SELECT FORMAT(2, CAST(REPLICATE(0, 6) AS NVARCHAR(6)))

https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql?view=sql-server-ver15

于 2021-05-09T19:25:12.737 回答
0

通过创建一个函数

CREATE FUNCTION MyZeroFill (
 @N BIGINT,
 @D SMALLINT
 ) RETURNS VARCHAR(50) AS
BEGIN
RETURN RIGHT('0000000000000000000000000000000000000000000000'+CAST
(@N AS VARCHAR),@D)
END
于 2013-11-18T11:34:18.640 回答