Untuk menambah jawaban lain, perilaku Postresql tentang sensitivitas huruf besar-kecil dari pengidentifikasi (nama tabel dan nama kolom) adalah :
- Jika nama tidak dikutip, diubah menjadi huruf kecil . Jika tidak, itu tidak akan tersentuh.
- Setelah itu, kecocokan peka huruf besar/kecil dicoba.
Ini tidak hanya berlaku untuk kueri, tetapi juga untuk manipulasi skema; khususnya:pembuatan tabel.
Aturan emasnya adalah konsistensi:
Jika Anda ingin menulis aplikasi portabel, Anda disarankan untuk selalu mengutip nama tertentu atau tidak pernah mengutipnya
Masalah yang diposting muncul, mungkin, karena nama tabel dan kolom dikutip pada waktu pembuatan (karenanya, mereka tidak dikonversi ke huruf kecil). Jadi, sekarang mereka harus dikutip (dan peka huruf besar/kecil) di semua kueri.
Biasanya, semua berfungsi seperti yang diharapkan.
db=# create table Xxx (id integer); -- unquoted, will be converted to lowercase
CREATE TABLE
db=# select * from xXx; -- this works ok
id
----
(0 rows)
db=# create table "Xxxx" (id integer); -- will be left untouched
CREATE TABLE
db=# select * from xxxx; -- bad
ERROR: relation "xxxx" does not exist
LINE 1: select * from xxxx;
db=# select * from Xxxx; -- bad
ERROR: relation "xxxx" does not exist
LINE 1: select * from Xxxx;
^
db=# select * from "Xxxx"; -- ok
id
----
(0 rows)
db=# \dt *xx*
List of relations
Schema | Name | Type | Owner
--------+------+-------+----------
public | Xxxx | table | postgres
public | xxx | table | postgres