列名在oracle索引中被屏蔽

时间:2013-06-07 12:11:45

标签: oracle indexing

我在oracle db中有一个表,它有一个由两列(idvalid_from)组成的唯一索引。 valid_from列的类型为带时区的时间戳 当我查询SYS.USER_IND_COLUMNS以查看我的表使用哪些列作为唯一索引时,我看不到valid_from列的名称,而是看到像 SYS_NC00027 $。 <的smth / p>

我是否有可能显示名称 valid_from 而不是 SYS_NC00027 $。

2 个答案:

答案 0 :(得分:2)

显然,Oracle为timestamp with time zone列创建了一个基于函数的索引。

可以在视图ALL_IND_EXPRESSIONS

中找到它们的定义

这样的事情应该让你开始:

select ic.index_name, 
       ic.column_name,
       ie.column_expression
from all_ind_columns ic
  left join all_ind_expressions ie 
    on ie.index_owner = ic.index_owner
   and ie.index_name = ic.index_name
   and ie.column_position = ic.column_position
where ic.table_name = 'FOO';

不幸的是column_expression是(已弃用的)LONG列,无法在coalesce()nvl()函数中轻松使用。

答案 1 :(得分:0)

使用以下内容验证列名信息。

select column_name,virtual_column,hidden_column,data_default from user_tab_cols where table_name='EMP';