oracle 12 虚拟列
在Oracle 12中,虚拟列是新增的一个特性,它可以用来存储计算结果而不是实际的数据。虚拟列可以使得查询过程更为简便,它们不需要像普通列一样存储实际的信息,而是在查询时动态计算出来。实际上,虚拟列的计算过程也可以使用普通列来完成。下面我们就来详细了解一下Oracle 12中虚拟列的应用场景和相关知识点。
假如我们拥有一个员工表,它存储了每个员工的ID、姓名、入职日期和薪水等信息。我们现在希望能够查询每个员工在公司的工作时长,例如在公司工作的年份和月份。采用传统的查询,我们需要手工计算每个员工的在公司工作时长,如下所示:
SELECT ID, NAME, HIRE_DATE, (TRUNC(MONTHS_BETWEEN(SYSDATE,HIRE_DATE))/12) AS YEARS_WORKED, (MOD(TRUNC(MONTHS_BETWEEN(SYSDATE,HIRE_DATE)),12)) AS MONTHS_WORKED FROM EMPLOYEE;