- 目次 -
DB2のテーブル名の扱い
DB2は基本的にSQL標準に従って、テーブル名は大文字として扱われる。
これにより小文字のテーブル名を指定した場合でも、自動的に大文字に変換されるはず。
小文字のテーブルの作り方 How to Create a Table with Lowercase Letters
率先してやりたいわけではないけど、一応作り方です。
小文字指定にはテーブル名を二重引用符(””)で囲む必要があるようです。
以下のようにSQL文を書き換えることで、テーブル名を小文字で指定できます。
CREATE TABLE "table_abc" (id INT, name VARCHAR(100));
このように指定することで、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の時に、該当のテーブル名が「なんでこいつだけ小文字?」となり、指定方法を探したところ、前述の指定で参照できた。
コメント