Используйте функцию right () в SQL Server - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь получить даты (например, 000,001 ... 999..n), когда я использую функцию right() из цикла while с select, он работает нормально. Если я назначу переменную, результат будет другим.

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;

результаты разные. В чем может быть причина?

1 Ответ

0 голосов
/ 17 октября 2019

Вы должны объявить varchar с длиной, например,

DECLARE @num varchar(5); 
...