PostgreSQL テーブル名・カラム名を大文字にした場合のSQLの書き方
確認バージョン:PostgreSQL 13
PostgreSQLのテーブル名やカラム名などオブジェクトにつける名前は、すべて小文字にしておく方が無難です。
SQL発行時に大文字が小文字に変換されてしまうため、以下のように「存在しません」といったエラーになります。
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;