如何替换 SQL 中的日期值?

How to replace date value in SQL?

我正在使用 Oracle 并尝试创建一个视图,我将在其中将一个日期值替换为另一个日期值。我正在尝试使用 case when 语句,但是,我需要使用相同的列名作为别名,并且我得到了我有重复列名的错误。您知道如何修复它或提出替换列中的日期值和创建视图的替代方法吗?我需要保持原来的 table 不变。 代码:

create view name_of_view as
select t.*,
(case when birth_date = to_date('4.12.2015', 'DD.MM.YYYY')
 then to_date('4.12.1950', 'DD.MM.YYYY')
 else birth_date end) as birth_date
 from table t;

正如 @Lukasz Szozda 在评论中建议的那样,当您尝试 t.* 时,它将检索 table 中的所有列,包括 birth_date。 因此,当您添加另一个 birth_date 作为 case when 的一部分时,您会收到重复的列名错误。

您需要做的是:

  • 您可以将 case when 列名称更改为:birth_date_new 或其他名称,然后您将同时拥有这两列。
  • 您按名称检索所有列,并且在检索 birth_date 时应用 case when.