所以我的Oracle数据库中有以下表格:
create table FilmStar (
filmStarID char(25) not null,
filmStarName char(50) not null,
birthplace char(50) not null,
yearBorn char(25) not null,
yearDied char(25),
primary key (filmStarID)
);
insert into FilmStar values ('0001','Tim Robbins','California, United States','1958',null);
insert into FilmStar values ('0005','Marlon Brando','Nebraska, United States','1924','2004');
我需要完成以下查询:列出所有已故电影明星的唯一号码,姓名和年龄。
我相信我需要
select * from FilmStar where yearDied is not null
但如何找出年龄?
答案 0 :(得分:0)
我更喜欢明确关于类型转换:
select . . .,
(cast(yearDied as int) - cast(yearBorn as int) ) as approximate_age
from FilmStart
where yearDied is not null;
依赖隐式转换可能会导致非常难以找到错误。将数字存储为字符串只会加剧这个问题。
注意:在Oracle中,为了这个目的,人们倾向于使用to_number()
而不是cast()
。