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);
我目前正在尝试解决 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);