Oracle SQL查询 - 年龄

时间:2015-10-27 21:45:24

标签: sql oracle

所以我的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

但如何找出年龄?

1 个答案:

答案 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()