目覚めのプログラミング

プログラミングに関することを気ままにシンプルを心掛けて書いていきます

PostgreSQL テーブル名・カラム名を大文字にした場合のSQLの書き方

確認バージョン:PostgreSQL 13

 

PostgreSQLのテーブル名やカラム名などオブジェクトにつける名前は、すべて小文字にしておく方が無難です。

 

SQL発行時に大文字が小文字に変換されてしまうため、以下のように「存在しません」といったエラーになります。

f:id:jobcsuzuki:20211008212016j:plain

SQLはTEST_TABLE1としていますが、実行するとtest_table1で判断されます。

そのため、エラーでtest_table1となっています。
実際のテーブル名は、TEST_TABLE1なのでテーブルが「ない」と判断されています。

 

ただEntityFramework等の影響で思うように小文字だけでできないこともあります。

大文字がある場合のSQLの書き方を記載します。

 

対応方法

 大文字を含む項目部分を" "(ダブルコーテーション)で囲います。

 

例1:大文字を含むテーブルの場合
SELECT testcol1 FROM "TEST_TABLE1"
例2:大文字を含むカラムの場合
SELECT "testCol1" FROM test_table1 
例3:テーブル別名を使う場合
SELECT tbl1."testCol1" FROM "TEST_TABLE1" tbl1

 

参考

pgAdmin4で大文字を含めたときのCreate文が以下のようになっていますので、この辺りを参考するとよいかと思います。

※testcol4だけが小文字です。

CREATE TABLE public."tbl_Test2"
(
    "testCol1" character(2) COLLATE pg_catalog."default" NOT NULL,
    "TestCol2" integer,
    "TESTCOL3" character(10) COLLATE pg_catalog."default",
    testcol4 character(1) COLLATE pg_catalog."default",
    CONSTRAINT "TBL_TEST2_pkey" PRIMARY KEY ("testCol1")
)

TABLESPACE pg_default;

ALTER TABLE public."tbl_Test2"
    OWNER to postgres;