在while循环中的同一行中打印sqlserver中的字符
我需要生产在while循环中的同一行中打印sqlserver中的字符,sql,sql-server,database,while-loop,Sql,Sql Server,Database,While Loop,我需要生产 * ** *** **** ***** 作为sql server中的输出 DECLARE @x INT ; DECLARE @y INT ; SET @x = 1; set @y=0; while @x <=5 begin while @y<@x begin print('*') set @y=@y+1 end print ''+char(1) set @y=0; set @x=@x+1 en
*
**
***
****
*****
作为sql server中的输出
DECLARE @x INT ;
DECLARE @y INT ;
SET @x = 1;
set @y=0;
while @x <=5
begin
while @y<@x
begin
print('*')
set @y=@y+1
end
print ''+char(1)
set @y=0;
set @x=@x+1
end
但是我不能在同一行中打印*每个*在单独的行中打印您可以创建一个变量,并用您想要打印的内容填充它,然后在所有循环之后打印它 请参阅下面的代码,我注释掉了您的打印,并使用了变量
DECLARE @x INT ;
DECLARE @y INT ;
DECLARE @ValueToPrint VARCHAR(MAX) = ''
SET @x = 1;
set @y=0;
while @x <=5
begin
WHILE @y<@x
BEGIN
SET @ValueToPrint += '*'
--print('*')
SET @y=@y+1
END
SET @ValueToPrint += ''+char(1)
--PRINT ''+char(1)
-- maybe you want to print it here, if so print the variable here if so uncomment these 2 lines
-- PRINT @ValueToPrint
-- SET @ValueToPrint = ''
SET @y=0;
SET @x=@x+1
END
PRINT @ValueToPrint
这看起来像是一个愚蠢的内部循环,你可以这样做:
print replicate('*', 5)
如果要打印而不是选择,请将其放入循环中
你可以这样试试
;WITH nums AS
(SELECT 1 AS value
UNION ALL
SELECT value + 1 AS value
FROM nums
WHERE nums.value <=5)
SELECT replicate('*',value)
FROM nums
这里有另一个不使用循环的选项。在现实世界中,理货/数字表可以很快解决这一问题
select replicate('*', n)
from
(
values(1),(2),(3),(4),(5)
) x(n)
尝试SQL SERVER中的内置复制方法
DECLARE @var int
SET @var = 1
DECLARE @rows int /*number of rows you want*/
SET @rows = 5
WHILE (@var <= @rows)
BEGIN
PRINT Replicate('*', @var)
SET @var = @var + 1
END
更多详细信息:print replicate'*',@xI根本不会在这里使用循环。我们一开始不会使用tsql进行打印。错误的工具,错误的学习经验。所有SQL版本都支持它吗?@PrashantPimpale。它已经存在很长很长时间了。它是如何工作的?在哪里读什么是xn@AuthorProxy来自的正在使用表值构造函数。x是派生表的别名。n是在表中命名列,类似于在cte中命名列的方式^_^
DECLARE @var int
SET @var = 1
DECLARE @rows int /*number of rows you want*/
SET @rows = 5
WHILE (@var <= @rows)
BEGIN
PRINT Replicate('*', @var)
SET @var = @var + 1
END