如何保留 varchar 字段的前导零

san*_*p.s 0 sql-server ssms

将带有前导零的数字保存到字符串变量或列中时,前导零将被截断。

当我运行此查询时:

declare @varchar as nvarchar(50)
set @varchar = 011
print @varchar
Run Code Online (Sandbox Code Playgroud)

我得到的结果是 11。

有没有办法得到011?

AMt*_*two 12

在您的代码示例中,011是数字,而不是字符串。SQL Server01111其简化为数字等效项,然后将其另存11为您在@varchar变量中看到的字符串。

如果您希望将数字视为字符串而不是数字,只需将其用引号括起来即可。此外,由于您的变量是 unicodenvarchar而不是简单的varchar,您应该在带引号的字符串前加上N.

这将打印字符串,保留前导零,使用nvarchar如上:

DECLARE @nvarchar AS nvarchar(50);
SET @nvarchar = N'011';
PRINT @nvarchar;
Run Code Online (Sandbox Code Playgroud)

但同样的情况也适用于 varchar:

DECLARE @varchar AS varchar(50);
SET @varchar = '011';
PRINT @varchar;
Run Code Online (Sandbox Code Playgroud)