1

是否可以在months_between(data1, data2) 函数中使用充满数据的列?

例如,我可以创建一个包含一组员工姓名和年龄的视图,其中年龄是根据他们的“出生”列计算的吗?

任何帮助,将不胜感激!

4

1 回答 1

2

是的,通常你可以在任何函数中使用列,它是一个数据库!例如:

select a.*, months_between(sysdate, dob)
  from users a

正如 ABCade 在使用虚拟列的评论中所建议的那样。这具有将数据存储在表中的好处,即它可以被索引并可以收集统计数据,同时提供在视图中动态计算的东西的“始终最新”的好处。不幸的是,年龄不是确定性的,它会根据当前的 sysdate 定期更改,因此虚拟列无法工作。

创建一个视图应该没问题:

create or replace view users_age as
 select u.*, floor(months_between(sysdate, dob)/12) as age
  from users u;

SQL小提琴

于 2013-10-06T11:40:05.557 回答