1

id2 つの列 (と)で構成される一意のインデックスを持つ oracle db にテーブルがありますvalid_from。列 valid_from は、タイム ゾーン付きのタイムスタンプ タイプです。
SYS.USER_IND_COLUMNS にクエリを実行して、テーブルが一意のインデックスとして使用している列を確認すると、valid_from列の名前が表示されず、代わりにSYS_NC00027$ のようなものが表示されます。

SYS_NC00027$ ではなく、valid_fromという名前を表示できる可能性はありますか。?

4

2 に答える 2

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()

于 2013-06-07T12:44:06.227 に答える