Oracle持久列别名

时间:2017-10-18 17:27:57

标签: sql oracle plsql oracle11g

我是Oracle最终用户,而不是数据库开发人员或管理员。

我们的数据库在列名中有一些拼写错误,类似于名为ADRESS2的列,而不是ADDRESS2

我必须在查询中使用这些列,并且很难记住哪个拼写错误适用于哪一列。另外,关于这使我的代码看起来的方式(不是那么专业),我有点肛门的喋喋不休。

我怀疑没有机会在生产中实际重命名这些列 - 它将是一个具有大量依赖性的低优先级。

在这种情况下,最佳做法是什么?

我可以想到几个选项:

  • 添加错误是故意的评论
  • 使用select(bad_name good_name, * from table)
  • 打包表格
  • 根据以上内容创建视图

但有没有办法做点什么:

DECLARE address2 CHAR(8) := 'adress2';    

并在查询中使用,但返回ADRESS2的值而不是char" adress2"。

理想的解决方案是:

  • 不会增加查询的复杂性
  • 将被开发人员认可为对列名不实用或具有误导性的情况的回应

1 个答案:

答案 0 :(得分:2)

我认为唯一合法的回应是观点。如果我在你的情况下,我会解决列错字。如果做不到这一点,我会创建一个视图。

但是,你问题中的某些内容让我觉得你愿意考虑更多的“那里”,所以这里是:

alter table sample_table add address2 
    invisible generated always as ( addres2 || '') virtual;

这很可能不会影响您的任何应用,因为除非他们明确要求,否则不会看到ADDRESS2列。

但是,它可以为你提供持久性类型。

请记住,函数ADDRES2 || ''表示您的查询不会使用您通过这种方式访问​​的列的索引。

重复:我会更改列名或进行查看。