将带有前导零的数字保存到字符串变量或列中时,前导零将被截断。
当我运行此查询时:
declare @varchar as nvarchar(50)
set @varchar = 011
print @varchar
Run Code Online (Sandbox Code Playgroud)
我得到的结果是 11。
有没有办法得到011?
AMt*_*two 12
在您的代码示例中,011
是数字,而不是字符串。SQL Server011
将11
其简化为数字等效项,然后将其另存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)