SQL Server Management Studio ZEROFILL

SQL Server Management Studio ZEROFILL,sql,sql-server-2008,ssms,zerofill,Sql,Sql Server 2008,Ssms,Zerofill,我正在尝试添加一个带有ZEROFILL的自动递增主键,最大大小为6 因此,它输出: 000001 000002 etc... 然而,我真的很难做到这一点,找不到答案。如何在SQLServerManagementStudio中设置此列类型 谢谢您不能在SQL Server中使用整数字段(我也不建议使用Varchar) 让SQL Server将字段存储为标识,然后(假设这是用于显示)在选择数据时格式化数据,如下所示: SELECT RIGHT('000000' + CONVERT(VARCHAR(

我正在尝试添加一个带有ZEROFILL的自动递增主键,最大大小为6

因此,它输出:

000001
000002 etc...
然而,我真的很难做到这一点,找不到答案。如何在SQLServerManagementStudio中设置此列类型


谢谢

您不能在SQL Server中使用整数字段(我也不建议使用Varchar)

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

SELECT RIGHT('000000' + CONVERT(VARCHAR(6),ID), 6) FROM Table

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

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

通过创建函数

CREATE FUNCTION MyZeroFill (
 @N BIGINT,
 @D SMALLINT
 ) RETURNS VARCHAR(50) AS
BEGIN
RETURN RIGHT('0000000000000000000000000000000000000000000000'+CAST
(@N AS VARCHAR),@D)
END

你为什么要这么做?是展览用的吗?如果是这样的话,最好是在这方面做,而不是db。不确定是否可以在MSSQL中执行此操作。您提到了SSMS,所以您使用的是MSSQLServer,版本是什么?添加所需的标记。字段类型是int,而不是前面提到的Varchar。我已经添加了标记。该字段不用于显示其与其他软件的接口。@Austin——也许可以这样使用标识字段,然后使用上面的内容创建一个视图。这取决于你的需要。这只是实现前导零的一种方法。
SELECT FORMAT(2, N'000000')
--OR
SELECT FORMAT(2, CAST(REPLICATE(0, 6) AS NVARCHAR(6)))