[DB2] 小文字のテーブル名の指定

DB関連

DB2のテーブル名の扱い

DB2は基本的にSQL標準に従って、テーブル名は大文字として扱われる。
これにより小文字のテーブル名を指定した場合でも、自動的に大文字に変換されるはず。

小文字のテーブルの作り方 How to Create a Table with Lowercase Letters

率先してやりたいわけではないけど、一応作り方です。
小文字指定にはテーブル名を二重引用符(””)で囲む必要があるようです。
以下のようにSQL文を書き換えることで、テーブル名を小文字で指定できます。

このように指定することで、DB2はテーブル名をそのまま小文字として保存し、参照時にも小文字として認識します。

小文字のテーブルの指定方法 How to Specify a Table with Lowercase Letters

selectやDescribeするときのテーブル名の指定方法です。
‘ ’(シングルクォート)で囲い、さらに” ”(ダブルクォート)で囲って指定する。

[select例]
$ db2 select “*” from xxx.'”table_abc”‘  
[describe table例]
$ db2 describe table xxx.'”table_abc”‘

※わかりづらいけど、「’ ” table_abc ” ‘ 」となっています。

■ 経緯

list table やsyscat.tables には存在するのに、selectすると「未定義の名前です。SQLSTATE=42704」となった。

【失敗例】

$ db2 “select * from xxx.table_abc”
SQL0204N “XXX.TABLE_ABC” は未定義の名前です。 SQLSTATE=42704

当初はなんで?とdescribe tableするとカラム情報が何もない為、どうやって作ったのだろうと、と小1時間ほど頭を悩ませた。
何度目かのlist tableの時に、該当のテーブル名が「なんでこいつだけ小文字?」となり、指定方法を探したところ、前述の指定で参照できた。

コメント

タイトルとURLをコピーしました