在 SQL Server 中使用 right() 函数



我正在尝试获取日期(如 000,001...999..n(,当我使用 while 循环中的right()函数时,选择它工作正常。如果我将其分配给变量,结果会有所不同。

DECLARE @cnt_chr INT = 1;
DECLARE @cnt_num INT = 1;
DECLARE @num varchar;
DECLARE @chr varchar;
DECLARE @full varchar;
WHILE @cnt_num <= 999 
BEGIN
select RIGHT(CONCAT('000', CONVERT(varchar, @cnt_num)), 3);
SET @cnt_num = @cnt_num + 1;
END;

如果我在开始之后这样写:

@num = RIGHT(CONCAT('000', CONVERT(varchar, @cnt_num)), 3); 
SET @cnt_num = @cnt_num + 1;
print @num;

结果是不同的。可能是什么原因?

你需要声明一个长度varchar,例如

DECLARE @num varchar(5); 

最新更新