99乘法表oracle java_Oracle中打印99乘法表的13种方法

--实现1:

select r1 || '*' || r1 || '=' || r1 *r1 A,

decode(r2,'', '', r2 || '*' || r1 || '=' || r2 *r1) b,

decode(r3,'', '', r3 || '*' || r1 || '=' || r3 *r1) C,

decode(r4,'', '', r4 || '*' || r1 || '=' || r4 *r1) D,

decode(r5,'', '', r5 || '*' || r1 || '=' || r5 *r1) E,

decode(r6,'', '', r6 || '*' || r1 || '=' || r6 *r1) F,

decode(r7,'', '', r7 || '*' || r1 || '=' || r7 *r1) G,

decode(r8,'', '', r8 || '*' || r1 || '=' || r8 *r1) H,

decode(r9,'', '', r9 || '*' || r1 || '=' || r9 *r1) Ifrom (select levelr1,

lag(level, 1) over(order by level) r2,

lag(level, 2) over(order by level) r3,

lag(level, 3) over(order by level) r4,

lag(level, 4) over(order by level) r5,

lag(level, 5) over(order by level) r6,

lag(level, 6) over(order by level) r7,

lag(level, 7) over(order by level) r8,

lag(level, 8) over(order by level) r9fromdual

connectby level < 10);--实现2:

select rn, ltrim(max(sys_connect_by_path(product, ',')), ',') productfrom (select rn, product, min(product) over(partition byrn) product_min,

row_number()over(order by rn, product)) + (dense_rank() over(order byrn) numIdfrom (select b.rn, a.rn || '*' || b.rn || '=' || a.rn *b.rn productfrom (select rownum rn from all_objects where rownum <= 9) a,

(select rownum rn from all_objects where rownum <= 9) bwhere a.rn <=b.rnorder byb.rn, product

)

)

startwith product =product_min

connectby numId - 1 =prior numIdgroup by rn order byproduct;--实现3:

select ltrim(sys_connect_by_path

(rownum|| '*' || lv || '=' || rpad(rownum * lv, 2),' ')

)from (select level lv from dual connect by level < 10)where lv = 1connectby lv + 1 =prior lv;--实现4:

select reverse(ltrim((sys_connect_by_path(reverse(rownum || 'x' || lv || '=' ||lpad(rownum* lv, 2, '0')),' ')))) "乘法口诀"from (select level lv from dual connect by level < 10)where lv = 1connectby prior lv = lv + 1;--实现5:

with x as(select level n from dual connect by level < 10)select

max(decode(a, 1, cnt)) asa,max(decode(a, 2, cnt)) asb,max(decode(a, 3, cnt)) asc,max(decode(a, 4, cnt)) asd,max(decode(a, 5, cnt)) ase,max(decode(a, 6, cnt)) asf,max(decode(a, 7, cnt)) asg,max(decode(a, 8, cnt)) ash,max(decode(a, 9, cnt)) asifrom(select c0.n a, c1.n b, c0.n || '*' ||c1.n || '=' || c0.n*c1.n cntfromx c0, x c1where c0.n <=c1.n

)group byb;--实现6:

select ltrim(sys_connect_by_path

(rownum- rn1+1||'*'||rownum || '=' || rpad(rownum * (rownum - rn1+1), 2) ,' '))from(select rownum rn1 from dual connect by rownum <=9)where rn1 = 1connectby rn1+1 =prior rn1;--实现7:

select max(decode(rowrn, 1, vresult, null)) A,max(decode(rowrn, 2, vresult, null)) B,max(decode(rowrn, 3, vresult, null)) C,max(decode(rowrn, 4, vresult, null)) D,max(decode(rowrn, 5, vresult, null)) E,max(decode(rowrn, 6, vresult, null)) F,max(decode(rowrn, 7, vresult, null)) G,max(decode(rowrn, 8, vresult, null)) H,max(decode(rowrn, 9, vresult, null)) Jfrom (selectrn,

row_number()over(partition by rn order byvresult) rowrn,

vresultfrom (selectb.rn rn,

a.rn|| '*' || b.rn || '=' || a.rn *b.rn vresultfrom (select rownum rn from dual connect by rownum <= 9) a,

(select rownum rn from dual connect by rownum <= 9) bwhere a.rn <=b.rn))group byrn;--方法8:

select a.rn, substr(max( sys_connect_by_path(case when a.rn*b.rn >= 10 thensubstr(translate(b.rn||'*'

||a.rn||'='

||a.rn*b.rn,'1234567890*=','一二三四五六七八九十'),1,case when mod(a.rn*b.rn,10) = 0 or a.rn*b.rn > 20 then 3 else 2 end)||'十'

|| translate(mod(a.rn*b.rn,10),'1234567890','一二三四五六七八九')elsetranslate(b.rn||'*'

||a.rn||'='

||a.rn*b.rn,'123456789=*','一二三四五六七八九得')end ,',')),2) 口诀from (select rownum rn from all_objects where rownum <= 9) a,

(select rownum rn from all_objects where rownum <= 9) bwhere a.rn >=b.rn

connectby prior a.rn =a.rnand prior b.rn = b.rn-1startwith b.rn = 1

group bya.rnorder by 1;--方法10:

declarev_resultvarchar2(200);begin

for i in 1..9loopselect wmsys.wm_concat(rownum||'*'||i||'='||rownum*i) into v_result from dual connect by rownum<=i;

dbms_output.put_line(v_result);endloop;end;--方法11:

declareiint;

jint;begini:=1;

j:=1;while i < 10loopwhile j <=i

loop

dbms_output.put(j||'*'||i||'=');if length(i*j) = 1 and j!=1 thendbms_output.put(' ');end if;

dbms_output.put(i*j||' ');

j:=j+1;endloop;

j:=1;

i:=i+1;

dbms_output.put_line(' ');endloop;end;/

--方法12:

declare

begin

for i in 1..9loopfor j in 1.. i loop

dbms_output.put(j||'*'||i||'=');if length(i*j) = 1 and j!=1 thendbms_output.put(' ');end if;

dbms_output.put(i*j);

dbms_output.put(' ');endloop;

dbms_output.put_line(' ');endloop;end;select decode(r1,null,null,r1 || '*' || rownum ||'='|| r1*rownum) a,

decode(r2,null,null,r2 || '*' || rownum ||'='|| r2*rownum) b,

decode(r3,null,null,r3 || '*' || rownum ||'='|| r3*rownum) c,

decode(r4,null,null,r4 || '*' || rownum ||'='|| r4*rownum) d,

decode(r5,null,null,r5 || '*' || rownum ||'='|| r5*rownum) e,

decode(r6,null,null,r6 || '*' || rownum ||'='|| r6*rownum) f,

decode(r7,null,null,r7 || '*' || rownum ||'='|| r7*rownum) g,

decode(r8,null,null,r8 || '*' || rownum ||'='|| r8*rownum) h,

decode(r9,null,null,r9 || '*' || rownum ||'='|| r9*rownum) ifrom(select 1r1,

decode(sign(level - 2), -1, null, 2) r2,

decode(sign(level - 3), -1, null, 3) r3,

decode(sign(level - 4), -1, null, 4) r4,

decode(sign(level - 5), -1, null, 5) r5,

decode(sign(level - 6), -1, null, 6) r6,

decode(sign(level - 7), -1, null, 7) r7,

decode(sign(level - 8), -1, null, 8) r8,

decode(sign(level - 9), -1, null, 9) r9fromdual

connectby level < 10)--方法13:

select max(case when a < 1 then '' else '1*'+cast(a as varchar)+'='+cast(a*1 as varchar) end) as [1],max(case when a < 2 then '' else '2*'+cast(a as varchar)+'='+cast(a*2 as varchar) end) as [2],max(case when a < 3 then '' else '3*'+cast(a as varchar)+'='+cast(a*3 as varchar) end) as [3],max(case when a < 4 then '' else '4*'+cast(a as varchar)+'='+cast(a*4 as varchar) end) as [4],max(case when a < 5 then '' else '5*'+cast(a as varchar)+'='+cast(a*5 as varchar) end) as [5],max(case when a < 6 then '' else '6*'+cast(a as varchar)+'='+cast(a*6 as varchar) end) as [6],max(case when a < 7 then '' else '7*'+cast(a as varchar)+'='+cast(a*7 as varchar) end) as [7],max(case when a < 8 then '' else '8*'+cast(a as varchar)+'='+cast(a*8 as varchar) end) as [8],max(case when a < 9 then '' else '9*'+cast(a as varchar)+'='+cast(a*9 as varchar) end) as [9]

from (select rownum as a from dual connect by rownum <= 9)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值