是否可以在months_between(data1, data2) 函数中使用充满数据的列?
例如,我可以创建一个包含一组员工姓名和年龄的视图,其中年龄是根据他们的“出生”列计算的吗?
任何帮助,将不胜感激!
是的,通常你可以在任何函数中使用列,它是一个数据库!例如:
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;