我正在尝试使用ZEROFILL添加auto_increment主键,最大值为6。
所以输出:
000001
000002 etc...
然而,我真的很难实现这个目标而无法找到答案。如何在SQL Server Management Studio中设置此列类型?
由于
答案 0 :(得分:7)
您无法在SQL Server中使用整数字段执行此操作(我也不建议使用Varchar)。
让SQL Server将该字段存储为Identity,然后(假设这是用于显示),在您选择数据时格式化数据:
SELECT RIGHT('000000' + CONVERT(VARCHAR(6),ID), 6) FROM Table
答案 1 :(得分:2)
您无法实现的目标。显示格式在表示层中完成,而不是在数据库中完成。您需要将值与值的表示分开。这两个值1
和000001
是相同的。
如果要返回格式化的内容,则必须将该值作为字符串返回。只需将其转换为字符串,在开头添加一些零,然后保留最左边的 n 字符。
答案 2 :(得分:0)
通过创建功能
CREATE FUNCTION MyZeroFill (
@N BIGINT,
@D SMALLINT
) RETURNS VARCHAR(50) AS
BEGIN
RETURN RIGHT('0000000000000000000000000000000000000000000000'+CAST
(@N AS VARCHAR),@D)
END
答案 3 :(得分:0)
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