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