列名称在oracle索引中被屏蔽

列名称在oracle索引中被屏蔽,oracle,indexing,Oracle,Indexing,我在oracle db中有一个表,它有一个由两列组成的唯一索引(id和valid\u from)。来自的有效列为带时区的时间戳类型。 当我查询SYS.USER_IND_列以查看我的表将哪些列用作唯一索引时,我无法从列中看到有效列的名称,而是看到smth,如SYS\u NC00027$。 是否有可能显示来自而非SYS\u NC00027$的名称valid\u.?显然,Oracle为带有时区的时间戳创建了基于函数的索引 它们的定义可以在视图所有IND\u表达式中找到 像这样的事情应该让你开始: se

我在oracle db中有一个表,它有一个由两列组成的唯一索引(
id
valid\u from
)。来自的有效列为带时区的时间戳类型。
当我查询SYS.USER_IND_列以查看我的表将哪些列用作唯一索引时,我无法从列中看到
有效列的名称,而是看到smth,如SYS\u NC00027$。


是否有可能显示来自而非SYS\u NC00027$的名称valid\u.

显然,Oracle为带有时区的
时间戳创建了基于函数的索引

它们的定义可以在视图
所有IND\u表达式中找到

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

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\u表达式是一个(不推荐的)
LONG
列,不能在
coalesce()
nvl()
函数中轻松使用。

使用下面的方法验证列信息

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

您是否可以包括查询
用户索引列的实际结果
视图?