|
曾经看到一个传说,数据库界有几位大师,可以用SQL语句来解数学难题。至于真假和案例,我也没见过。但是可以肯定的是,SQL语句是个很强大的工具,除了平时工作中的那些枯燥的例子,还能实现很多功能。
下面给大家来一个:九九乘法口诀
WITH tmp AS
( SELECT rownum rn FROM all_objects WHERE rownum<=9
)
SELECT a.rn,
SUBSTR(MAX( sys_connect_by_path(
CASE
WHEN a.rn*b.rn>=10
THEN SUBSTR(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','一二三四五六七八九')
ELSE TRANSLATE(b.rn
||a.rn
||'='
||a.rn*b.rn,'123456789=','一二三四五六七八九得')
END ,',')),2) 口诀
FROM tmp A,
tmp b
WHERE a.rn >=b.rn
CONNECT BY prior a.rn=a.rn
AND prior b.rn =b.rn-1
START WITH b.rn =1
GROUP BY A.rn
ORDER BY 1;
|
|