在 Oracle SQL 中,DECODE 函数能够有效减少查询的处理时间。例如,传统的查询可能需要分别统计不同部门的员工数量和薪资:
SELECT COUNT(*), SUM(SAL) FROM EMP WHERE DEPT_NO = 0020 AND ENAME LIKE 'SMITH%';
SELECT COUNT(*), SUM(SAL) FROM EMP WHERE DEPT_NO = 0030 AND ENAME LIKE 'SMITH%';
但你可以使用 DECODE 函数优化查询,减少重复计算,提高效率:
SELECT COUNT(DECODE(DEPT_NO, 0020, 'X', NULL)) D0020_COUNT,
COUNT(DECODE(DEPT_NO, 0030, 'X', NULL)) D0030_COUNT,
SUM(DECODE(DEPT_NO, 0020, SAL, NULL)) D0020_SAL,
SUM(DECODE(DEPT_NO, 0030, SAL, NULL)) D0030_SAL
FROM EMP
WHERE ENAME LIKE 'SMITH%';
此方法通过在 DECODE 函数中检查 DEPT_NO
,按条件统计各部门的员工数量和薪资总和,避免了多次查询和计算,显著提高了查询性能。