如何替换SQL中的日期值?

如何替换SQL中的日期值?,sql,oracle,date,case,sql-view,Sql,Oracle,Date,Case,Sql View,我正在使用Oracle并尝试创建一个视图,在该视图中,我将用另一个日期值替换一个日期值。我正在尝试使用case-when语句,但是,我需要使用与别名相同的列名,我得到的错误是我有重复的列名。您知道如何修复它或提出替代方案来替换列中的日期值并创建视图吗?我需要保持原来的桌子不变。 代码: 正如@Lukasz Szozda在评论中所建议的,当您尝试t.*时,它将从您的表中检索所有列,包括出生日期。 因此,当您添加另一个出生日期作为案例的一部分时,您将收到重复列名错误 您需要做的是: 您可以将列名的大

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

正如@Lukasz Szozda在评论中所建议的,当您尝试t.*时,它将从您的表中检索所有列,包括出生日期。 因此,当您添加另一个出生日期作为案例的一部分时,您将收到重复列名错误

您需要做的是:

您可以将列名的大小写更改为:birth\u date\u new或其他任何内容,然后您将拥有这两个列。 您可以按名称检索所有列,并在检索出生日期时应用大小写。
t、 *是一种反模式。使用完整列列表。Oracle不支持,是否有其他不需要使用完整列列表的选项?我的表大约有100列。我不坚持使用case语句进行替换,我只需要创建视图,而不更改现有表。选择col1、col2。。。你不需要手写。只需从object Explorer拖放如果您使用的是SQL developer,则需要为视图保留相同的列名:birth\u date,只需更改其中的值即可。因此,除了case之外,没有其他替换选项允许我为视图替换它?例如,以与update table工作方式相同的方式更新视图?不列出所有列-我希望避免超长查询。事实上,不,您可以选择*或选择specifics。或者,如果必须这样做,您可以编写一个pl/sql块并执行大量查询以实现所需的功能。@doremi使用“出生日期”作为case语句的别名,并保留星号。
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;