Oracle SQL:是否可以通过不同的名称引用列而无需重命名

时间:2015-04-02 16:51:21

标签: sql oracle tablecolumn

我的问题描述: 例如,我有一个表“项目”和列“id”,“名称”,“颜色”,但由于一些奇怪的原因(请不要问为什么 - 这不是我)在“颜色”列中有关于该项目的信息,它本质上应该被称为“描述” 项目中的许多代码都依赖于它,只需重命名列名称将花费大量时间。

问题: 有没有办法创建某种指向该列的指针并正确调用它,以便下面的sql将按预期工作:

select i.id, i.name, i.description from Item i

(它会知道当我输入“description”时,它应该会查看“color”列。

3 个答案:

答案 0 :(得分:2)

简答:不。答案很长:您可以在Oracle中创建插入和更新触发器,始终保持这些列同步。但是,最好的办法是使用它,或重命名并修复代码。拥有触发器并将数据存储在两列中只是为了让您的旧代码不会中断,但让新代码使用新列对我来说就像一个反模式。坦率地说,即使Oracle DID具有开箱即用的要求,它仍然感觉像是一种反模式。作为一名开发人员,我会用以下的方式摸不着头脑:“让我们看看我们选择的所有地方color。”糟糕,您错过了使用description的所有地方。尝试走这条路似乎很困惑。再次,我建议与它一起生活,或花时间用新的正确名称更新项目

答案 1 :(得分:1)

您可以使用正确命名的列创建可更新视图。

请参阅https://msdn.microsoft.com/en-us/library/ms180800.aspx

答案 2 :(得分:0)

这称为列别名,例如clunky

select BB from
(select column1 AA, column2 BB, column3 CCC from mytable);