我在oracle db中有一个表,它有一个由两列(id
和valid_from
)组成的唯一索引。 valid_from列的类型为带时区的时间戳
当我查询SYS.USER_IND_COLUMNS以查看我的表使用哪些列作为唯一索引时,我看不到valid_from
列的名称,而是看到像 SYS_NC00027 $。 <的smth / p>
我是否有可能显示名称 valid_from 而不是 SYS_NC00027 $。?
答案 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';