sql - 在 PL/SQL 中打印字母金字塔

标签 sql oracle plsql

我有一个练习来编写一个程序来打印出这样的字母金字塔:

    A
   ABA
  ABCBA
 ABCDCBA
ABCDFDCBA

该任务还建议使用 INSTR、LPAD、UPPER。

我想要一个包含字母表中所有字母的金字塔。但是,我发现先用数字表示更容易:

IF x in 0..25 loop
dbms_output.put_line(x);
end loop;
end; 

结果只是 0-25 之间的一条直线。我不知道如何在最终需要是字母的数字前添加空格以形成金字塔形状。 请不要给出完整的答案,我只需要一些建议和方向来解决这个任务。

最佳答案

这个有效:

DECLARE
    aLine VARCHAR2(100);
BEGIN
    FOR PyramidLevel IN 0..25 LOOP
        aLine := NULL;

        FOR i IN 0..PyramidLevel-1 LOOP
            aLine := aLine || CHR(i+65);
        END LOOP; 

        FOR i IN REVERSE 0..PyramidLevel LOOP
            aLine := aLine || CHR(i+65);
        END LOOP;
        aLine := LPAD(aLine, 26+PyramidLevel);       

       DBMS_OUTPUT.PUT_LINE('_'||aLine);
    END LOOP;
END;


_                         A
_                        ABA
_                       ABCBA
_                      ABCDCBA
_                     ABCDEDCBA
_                    ABCDEFEDCBA
_                   ABCDEFGFEDCBA
_                  ABCDEFGHGFEDCBA
_                 ABCDEFGHIHGFEDCBA
_                ABCDEFGHIJIHGFEDCBA
_               ABCDEFGHIJKJIHGFEDCBA
_              ABCDEFGHIJKLKJIHGFEDCBA
_             ABCDEFGHIJKLMLKJIHGFEDCBA
_            ABCDEFGHIJKLMNMLKJIHGFEDCBA
_           ABCDEFGHIJKLMNONMLKJIHGFEDCBA
_          ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
_         ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
_        ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
_       ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
_      ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
_     ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
_    ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
_   ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
_  ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
_ ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
_ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA

看起来 DBMS_OUTPUT.PUT_LINE() 修剪了前导空格字符(至少在我的 TOAD 中),所以我将 _ 放在开头。

关于sql - 在 PL/SQL 中打印字母金字塔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46728915/

相关文章:

java - Querydsl - 不相关表上的左连接

sql - 如何在oracle 12c中创建用户

xml - 如何重命名 Oracle XMLTYPE 节点

mysql - 包含数据库信息的表

SQL Server : display distinct list of orders, 并指示哪些订单包含特定产品

mysql - 可以改革列的表结构吗?

oracle - PLW-07202 : bind type would result in conversion away from column type

sql - 总结停止时间数据的更好方法?

c# - 完成队列释放速度不够快

database - 如何在实体-属性-值设计中处理不同的数据类型(例如,具有多列的单个表或每种数据类型的多个表)?