SQL Функция REPLICATE () не реплицирует и просто возвращает один экземпляр предоставленной строки при назначении переменной - PullRequest
0 голосов
/ 28 апреля 2020

В настоящее время я пытаюсь решить задачу программирования SQL (создание структуры tri angular с использованием символов звездочки). Пример вывода ниже (3 строки);

* * * 
* *
*

Я написал код, который, по моему мнению, должен работать (исходя из некоторого хобби C# опыта, поэтому я могу подойти к этому совершенно неверным образом). Тем не менее, мое использование функции REPLICATE(), по-видимому, выводит указанный символ / строку только один раз, без фактической репликации.

Я предоставил свой текущий код здесь:

DECLARE @n INT = 3;
DECLARE @output NVARCHAR;
DECLARE @nextLine NVARCHAR;
DECLARE @char NVARCHAR = '* ';

WHILE @n > 0
BEGIN
    SET @nextLine = REPLICATE(@char, @n);
    SET @output = CONCAT(@output, @nextLine, CHAR(10));
    SET @n = @n - 1;
END

PRINT TRIM(@output);

Ожидаемый вывод :

* * * 
* *
*

Фактический токовый выход:

*

Для уточнения / повторения по-другому;

SELECT REPLICATE(@char, @n);
SET @output = REPLICATE(@char, @n);
SELECT @output;

1-й ВЫБОР, приведенный выше, возвращает ожидаемый результат (строка типа '* * * * ....'), однако, второй SELECT - при попытке установить его в качестве значения переменной сохраняет только одну звездочку (''). Почему?

1 Ответ

0 голосов
/ 28 апреля 2020

Объявить длину параметра @output и @nextLine.

DECLARE @output NVARCHAR(50);
DECLARE @nextLine NVARCHAR(50);
...