column名
今日のOracleメモ。
あるスキーマに存在する全テーブル内で hoge というカラムを持つテーブル一覧が知りたい
という事で以下のSQLで取得
select table_name from user_tab_columns where column_name = 'hoge';
ここで期待していた該当テーブルが取得出来ないので少し調査。
テーブル定義の際に
create table test(hoge number)
とした場合はカラムhogeはデータディクショナリ上はHOGEとして認識されます。
create table test ("hoge" number)
とした場合はidとして認識されます
明示的に小文字のカラム名にしたい場合は定義時に""で囲みます。
create table test (HOGE number) create table test (hoge number)
テーブル定義時に""で囲まない場合はすべてデータディクショナリ上、大文字化(HOGE)さ
れます。
select句で指定するときは大文字でも小文字でも問題ありません。
select hoge from test; select HOGE from test;
あまりやらないとは思いますが、"HogeNumber"と定義した場合は少し面倒な事になりま
す。
都度、下記のようにしなければいけないので。
select "HoGe" from test;
逆に""を付けずに
create table test (HoGe number)
と定義した場合であれば
select hoge from test;
で問題ありません。
結論としてOracleのデータディクショナリ上はHOGEという大文字で格納されているから
user_tab_columnsなどでcolumn_nameを検索するときは大文字指定する必要があるという
事でした。
最終的には、HOGEと指定して無事に知りたいテーブル一覧を取得。
select table_name from user_tab_columns where column_name = 'HOGE';