2013-02-27 177 views
3

我想添加一个auto_increment主键与ZEROFILL与最大大小为六。SQL Server Management Studio ZEROFILL

所以它输出:

000001 
000002 etc... 

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

感谢

+3

为什么你想这样做吗?是否用于显示?如果是这样,最好做的是这个而不是db。不知道你可以在MSSQL中做到这一点。 – sgeddes 2013-02-27 13:38:53

+0

你提到过SSMS,所以你使用的是MS SQL Server,这个版本是什么?添加所需的标签 – Yaroslav 2013-02-27 13:39:09

+0

对不起,字段类型是一个int不是一个Varchar如第一次提到。我已经添加了标签。 – Austin 2013-02-27 13:42:36

回答

6

你不能在SQL Server中的整型字段做到这一点(我也不会用一个varchar推荐它)。

让SQL Server存储领域作为标识,然后(假设这是用于显示)当您选择它喜欢这样,格式化数据:

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

该字段不是用于显示其与其他软件的接口。 – Austin 2013-02-27 13:48:52

+1

@奥斯汀 - 或许使用身份领域,然后用上面的方法创建一个视图。取决于你的需求。这只是实现前导零的一种方式。 – sgeddes 2013-02-27 13:52:45

1

什么你想达到不可能。显示格式是在表示层而不是在数据库中完成的。您需要从值的表示中分离出值。两个值1000001是相同的。

如果你想返回格式的,那么你将不得不返回值为一个字符串。只需将其转换为一个字符串,在开头添加一些零,然后保留最左边的字符。

0

通过创建一个功能

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