我正在尝试绘制两种模式,但遇到了不同的问题:
1)
*******************
******************
*****************
****************
***************
**************
*************
************
***********
**********
*********
********
*******
******
*****
****
***
**
*
NULL
我已经编写了以下查询来获取此内容:
select CASE WHEN (r2-r1)!=0 THEN
rpad('*',r2-r1,'*') END
from (select rownum r1
,(max(level) over ()) as r2
from dual
connect by level<=20);
我面临的问题(如果您查看图片)是空在最后出现。我无法找到摆脱它的方法。
2)我试图在每颗星星之间画出相同的图案。也被困在这里..
所有的帮助都将是非常可观的。
SQL> select rpad('*', level, '*') as c from dual connect by level <= 20 order by
length(c) desc;
C
------------------------------------
********************
*******************
******************
*****************
****************
***************
**************
*************
************
***********
**********
*********
********
*******
******
*****
****
***
**
*
20 rows selected.
SQL> select rpad('*', 2*level-1, ' *') as c from dual connect by level <= 20 order by
length(c) desc;
C
--------------------------------------------------
* * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * *
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
20 rows selected.
只需过滤掉最大值等于 ROWNUM 的行:
SELECT
rpad('*', r2 - r1, '*') c1,
rpad('* ', (r2 - r1) * 2, '* ') c2
FROM
(SELECT ROWNUM r1, max(LEVEL) OVER () AS r2 FROM dual CONNECT BY LEVEL <= 20)
WHERE
r1 < r2