P(R)表示Julia在R行中绘制的图案。以下模式代表P(5)

时间:2017-04-02 07:41:02

标签: mysql

我最近开始学习mysql并陷入这个问题:

P(R)表示Julia在R行中绘制的图案。以下模式代表P(5): 编写查询以打印模式P(20)。

the question

我写的答案是这样的:

DELIMITER $$
BEGIN
DECLARE CH VARCHAR(255);
DECLARE CT INT DEFAULT 20;
SET CH = ' *';
WHILE CT>0 DO
    SELECT REPEAT(CH,CT);
    SET CT=CT-1;
    END WHILE
  END $$
DELIMITER ;

不知怎的,它没有用......什么都不见了?

7 个答案:

答案 0 :(得分:1)

set @number = 0;
select repeat('* ', @number := @number + 1) from information_schema.tables limit 20;

这对我有用!

答案 1 :(得分:0)

您的代码中有多个错误。试试这个:

DROP PROCEDURE IF EXISTS `DoPattern`;
DELIMITER $$
CREATE PROCEDURE DoPattern()
BEGIN
    DECLARE CT INT(10) DEFAULT 20;
    DECLARE CH VARCHAR(256) DEFAULT " *";
    CREATE TEMPORARY TABLE `pattern` (`rowno` INT(2) UNSIGNED, `pattern_string` VARCHAR(50)) ENGINE=MEMORY;

    WHILE CT > 0 DO
        INSERT INTO `pattern` (`rowno`,`pattern_string`) VALUES (CT,REPEAT(CH,CT));
        SET CT = CT - 1;
    END WHILE;

    SELECT `pattern_string` FROM `pattern` ORDER BY `rowno` DESC;
    DROP TABLE `pattern`;
END$$
DELIMITER ;

CALL DoPattern();

答案 2 :(得分:0)

SELECT REPEAT('*',@ NUMBER:= @NUMBER - 1)FROM information_schema.tables,(SELECT @NUMBER:= 21)t LIMIT 20;

答案 3 :(得分:0)

这是在MS SQL中使用循环和“ REPLICATE”功能的简短解决方案:

     DECLARE @R INT = 20;
     WHILE @R > 0
     BEGIN
        DECLARE @C AS VARCHAR(max)
        SET @C = (SELECT REPLICATE('*\n', @R))
        PRINT replace(@C,'\n',char(10))
        SET @R = @R- 1;
     END

这是使用循环且没有“ REPLICATE”功能的长解决方案:

    DECLARE @r INT = 20
    DECLARE @i INT = 0
    DECLARE @F varchar(max) = ''
    WHILE @i < @r
    BEGIN

        DECLARE @j INT = 0
        DECLARE @o varchar(max) = ''
        WHILE @j < @r - @i
        BEGIN
            SET @o = @o + '* '
            SET @j += 1
        END

        SET @i += 1
        SET @F = @F + @o + CHAR(10)
    END
    PRINT @F

注意 :如果看不到以三角形图案打印的 * ,则必须使用您在“ char(?)

中指定的内容

答案 4 :(得分:0)

DECLARE @i INT = 20
WHILE (@i > 0) 
BEGIN
   PRINT REPLICATE('* ', @i) 
   SET @i = @i - 1
END

答案 5 :(得分:0)

使用它来解决查询:

SET @X=21;
SELECT REPEAT('* ',@X:=@X-1) FROM information_schema.tables LIMIT 20;

答案 6 :(得分:0)

对于 MySQL,See question 这对我有用 -

Image

set @number = 21;
select repeat('* ', @number := @number - 1) from information_schema.tables;