SQL Server Management Studio ZEROFILL

7
我正在尝试添加一个自动增量主键,带有ZEROFILL,并且最大长度为六个字符。
所以输出如下:
000001
000002 etc...

但我真的很难做到这一点,找不到答案。如何在SQL Server Management Studio中设置此列类型?

谢谢


3
你为什么要这样做?是为了展示吗?如果是,最好在展示端而不是数据库上进行。不确定你是否可以在MSSQL中实现这一点。 - sgeddes
你提到了SSMS,那么你正在使用MS SQL Server,是哪个版本?请添加必要的标签。 - Yaroslav
抱歉,该字段类型是整型而不是首次提到的字符型。我已添加了标签。 - Austin
4个回答

10

在SQL Server中,您不能使用整数字段来实现此功能(使用Varchar也不建议)。

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

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

该字段不是用于显示,而是用于与其他软件进行接口交互。 - Austin
1
@Austin -- 或许可以使用“identity”字段并创建上述视图。这取决于您的需求。这只是实现前导零的一种方法。 - sgeddes

2
您想要实现的目标是不可能的。显示格式化是在演示层完成的,而不是在数据库中完成的。您需要将值与值的表示分开。两个值1000001是相同的。
如果您想要返回一些格式化的内容,则必须将该值返回为字符串。只需将其转换为字符串,再在开头添加若干个零,然后保留最左边的n个字符即可。

1

0
通过创建一个函数
CREATE FUNCTION MyZeroFill (
 @N BIGINT,
 @D SMALLINT
 ) RETURNS VARCHAR(50) AS
BEGIN
RETURN RIGHT('0000000000000000000000000000000000000000000000'+CAST
(@N AS VARCHAR),@D)
END

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接