我是Oracle最终用户,而不是数据库开发人员或管理员。
我们的数据库在列名中有一些拼写错误,类似于名为ADRESS2
的列,而不是ADDRESS2
我必须在查询中使用这些列,并且很难记住哪个拼写错误适用于哪一列。另外,关于这使我的代码看起来的方式(不是那么专业),我有点肛门的喋喋不休。
我怀疑没有机会在生产中实际重命名这些列 - 它将是一个具有大量依赖性的低优先级。
在这种情况下,最佳做法是什么?
我可以想到几个选项:
select(bad_name good_name, * from table)
但有没有办法做点什么:
DECLARE address2 CHAR(8) := 'adress2';
并在查询中使用,但返回ADRESS2
的值而不是char" adress2"。
理想的解决方案是:
答案 0 :(得分:2)
我认为唯一合法的回应是观点。如果我在你的情况下,我会解决列错字。如果做不到这一点,我会创建一个视图。
但是,你问题中的某些内容让我觉得你愿意考虑更多的“那里”,所以这里是:
alter table sample_table add address2
invisible generated always as ( addres2 || '') virtual;
这很可能不会影响您的任何应用,因为除非他们明确要求,否则不会看到ADDRESS2
列。
但是,它可以为你提供持久性类型。
请记住,函数ADDRES2 || ''
表示您的查询不会使用您通过这种方式访问的列的索引。
重复:我会更改列名或进行查看。