MYSQL常见问题打印'*' 20,19...1次

问题描述 投票:0回答:2

我们必须打印 20 次“*”,然后打印 19 次,依此类推,直到我们只打印 1 次!

delimiter $$
create procedure test()
begin
    set @ans = 20;
    while(@ans>0) do
        select repeat('*',@ans);
        set @ans = @ans - 1;
    end while;
end $$
delimiter ;

call test();

这是完成工作,但也在每个相应的字符行之后打印

(repeat('*',@ans))
。我做错了什么?

mysql loops procedure
2个回答
0
投票

这是你想要的吗:

You can add you want in this example its

*

delimiter $$
create procedure test()
begin
    set @ans = 20;
    while(@ans>0) do
        select repeat('*',@ans) as '*';
        set @ans = @ans - 1;
    end while;
end $$
delimiter ;

call test();

0
投票

您的存储过程执行 select 语句 20 次,每个 select 语句都有自己的 result-set,所以这就是导致您所说的原因:printing (repeat('*',@ans)) 在每个相应的字符之后线.

相反,您可以使用变量来存储 while 循环内的填充字符串,然后在循环外选择该变量。

create procedure test()
begin
    set @ans = 20;
    set @res = '';
    while(@ans>0) do
        set @res= concat(@res , repeat('*',@ans), '\n'); -- you may replace '\n' with any other delimiter.
        set @ans = @ans - 1;
    end while;
select @res as test_result;
end 

看演示

© www.soinside.com 2019 - 2024. All rights reserved.