SQL乘法表

壹頁書發表於2014-04-26
列印9*9乘法表
正三角
  1. with
  2. t as
  3. (
  4.  select level as n from dual connect by level<=9
  5. )
  6. select sys_connect_by_path(
  7.                 lpad(b.n,2,' ')
  8.                 ||'*'
  9.                 ||lpad(a.n,2,' ')
  10.                 ||'='
  11.                 ||lpad(a.n*b.n,2,' '),'|') as result
  12. from t a,t b
  13. where level=a.n
  14. start with b.n=1
  15. connect by a.n=prior a.n
  16. and b.n=prior b.n+1;
倒三角

  1. set pagesize 200;
  2. set linesize 400;
  3. col result format a100;
  4. with t as
  5. (
  6.  select level as n from dual connect by level<=9
  7. )
  8. select
  9. lpad(
  10.         substr(
  11.             sys_connect_by_path(lpad(a.n,2,' ')
  12.                 ||'*'
  13.                 ||lpad(b.n,2,' ')
  14.                 ||'='
  15.                 ||lpad(a.n*b.n,2,' '),
  16.                 '|'
  17.                 ),
  18.             instr(
  19.                 sys_connect_by_path(lpad(a.n,2,' ')
  20.                     ||'*'
  21.                     ||lpad(b.n,2,' ')
  22.                     ||'='
  23.                     ||lpad(a.n*b.n,2,' '),
  24.                     '|'
  25.                     ),
  26.                 '|',-1,a.n
  27.              )
  28.          ),81,' '
  29.     ) as result
  30. from t a,t b
  31. where level=9
  32. start with b.n=9
  33. connect by a.n=prior a.n and b.n=prior b.n-1
  34. order by a.n desc,b.n desc;


  1. WITH num AS
  2.   ( SELECT rownum r FROM dual CONNECT BY level<=9
  3.   )
  4. SELECT listagg(y.r
  5.   ||'*'
  6.   ||x.r
  7.   ||'='
  8.   ||
  9.   CASE
  10.     WHEN x.r*y.r<10
  11.     THEN ' '
  12.     ELSE ''
  13.   END
  14.   || (x.r*y.r),' ') within GROUP (ORDER BY y.r)rr
  15. FROM num x,
  16.   num y
  17. WHERE x.r>=y.r
  18. GROUP BY x.r;

  19. WITH num AS
  20.   ( SELECT rownum r FROM dual CONNECT BY level<=9
  21.   )
  22. SELECT lpad(' ',(9-x.r)*7,' ')
  23.   || listagg(y.r
  24.   ||'*'
  25.   ||x.r
  26.   ||'='
  27.   ||
  28.   CASE
  29.     WHEN x.r*y.r<10
  30.     THEN ' '
  31.     ELSE ''
  32.   END
  33.   || (x.r*y.r),' ') within GROUP(ORDER BY y.r DESC) rr
  34. FROM num x,
  35.   num y
  36. WHERE x.r>=y.r
  37. GROUP BY x.r
  38. ORDER BY x.r DESC;

  39. WITH num AS
  40.   ( SELECT rownum r FROM dual CONNECT BY level<=9
  41.   )
  42. SELECT
  43.   (SELECT lpad(' ',(9-x.r)*7,' ')
  44.     || REPLACE(MAX(sys_connect_by_path(x.r
  45.     ||'*'
  46.     ||(x.r+1-rownum)
  47.     ||'='
  48.     || (
  49.     CASE
  50.       WHEN (x.r+1-rownum)*x.r<10
  51.       THEN 'z'
  52.       ELSE ''
  53.     END)
  54.     || ((x.r+1-rownum)*x.r),' ')),'z',' ')r
  55.   FROM dual
  56.     CONNECT BY level<=x.r
  57.   ) xx
  58. FROM num x
  59. ORDER BY x.r DESC;

  60. WITH num AS
  61.   ( SELECT rownum r FROM dual CONNECT BY level<=9
  62.   )
  63. SELECT
  64.   (SELECT REPLACE(MAX(sys_connect_by_path(rownum
  65.     ||'*'
  66.     ||x.r
  67.     ||'='
  68.     ||(
  69.     CASE
  70.       WHEN rownum*x.r<10
  71.       THEN 'z'
  72.       ELSE ''
  73.     END)
  74.     || (rownum*x.r),' ')),'z',' ') r
  75.   FROM dual
  76.     CONNECT BY level<=x.r
  77.   ) xx
  78. FROM num x;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1150050/,如需轉載,請註明出處,否則將追究法律責任。

相關文章