SQL REPLICATE() 函数在分配给变量时不复制并简单地返回所提供字符串的单个实例

SQL REPLICATE() function not replicating and simply returning a single instance of the provided string when assigning to variable

我目前正在尝试解决 SQL 编程挑战(使用星号字符构建三角形结构)。下面的示例输出(3 行);

* * * 
* *
*

我编写了我认为应该有效的代码(来自一些业余 C# 经验,所以我可能以完全错误的方式处理这个问题)。但是,我对 REPLICATE() 函数的使用似乎只输出提供的 character/string 一次,而没有实际复制。

我在这里提供了我当前的代码:

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);

预期输出:

* * * 
* *
*

当前实际输出:

*

以不同的方式clarify/re-iterate;

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

上面的第一个SELECT,returns预期的输出(像'* * * * ...'这样的字符串),然而,第二个SELECT - 试图将其设置为变量的值,只保留一个星号('')。为什么?

声明参数@output@nextLine的长度。

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