您的位置:首页 > 其它

dbms_aw.eval_number 解析算术表达式

2014-05-23 10:04 169 查看
教主 帮朋友问个问题 有个类似于撮合的系统

随机取10个用户 要求他们的一个指标数之和等于100

这种需求能用sql搞定么?

由于对算法研究不多,对于这种问题只想到枚举所有10个的组合,然后计算和

这儿就需要对生成的算术表达式进行解析,可以用 dbms_aw.eval_number

我们用emp.sal来模拟,取三个sal相加等于5825 的记录

SELECT *
FROM (SELECT ltrim(sys_connect_by_path(empno, ','), ',') AS empno_p,
ltrim(sys_connect_by_path(ename, '+'), ',') AS ename_p,
ltrim(sys_connect_by_path(sal, '+'), '+') AS sal_p
FROM emp
WHERE connect_by_isleaf = 1
CONNECT BY nocycle PRIOR ROWID < ROWID
AND LEVEL <= 3)
WHERE dbms_aw.eval_number(sal_p) = 5825;

EMPNO_P              ENAME_P              SAL_P
-------------------- -------------------- --------------------
7499,7521,7566       +ALLEN+WARD+JONES    1600+1250+2975
7499,7566,7654       +ALLEN+JONES+MARTIN  1600+2975+1250
2 rows selected
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: