【趣味SQL】打印菱形

热身 - 打印三角形

col data format a9;
Select lpad(' ',(5-level)) || lpad('x',(2*level-1),'x') data
from dual connect by level <= 5
思路是:长宽不变,用空格填充。最终输出三角形。
DATA    
---------
    x     
   xxx    
  xxxxx   
 xxxxxxx  
xxxxxxxxx

主题 - 打印菱形

col data format a9
select lpad(' ',(5-level)) || lpad('x',(2*level-1),'x') data
from dual connect by level <= 5
union all
select data from
(select lpad(' ',(level-1),' ') || lpad('x',(6-level),'x') || lpad('x',(5-level),'x') data, rownum rn from dual connect by level <= 5) where rn > 1;
思路:将两个上下颠倒的三角形拼在一起就是菱形,只是要去掉中间一行。由于用了connect by,保证了输出的顺序。

DATA    
---------
    x     
   xxx    
  xxxxx   
 xxxxxxx  
xxxxxxxxx
 xxxxxxx  
  xxxxx   
   xxx    
    x 

你可能感兴趣的:(SQL,&,PL/SQL)