I have a db table say, persons
in Postgres handed down by another team that has a column name say, "first_Name"
. Now am trying to use PG commander to query this table on this column-name.
select * from persons where first_Name="xyz";
And it just returns
ERROR: column "first_Name" does not exist
Not sure if I am doing something silly or is there a workaround to this problem that I am missing?
All identifiers (including column names) that are not double-quoted are folded to lower case in PostgreSQL. Column names that were created with double-quotes and thereby retained upper-case letters (and/or other syntax violations) have to be double-quoted for the rest of their life: ("first_Name"
)
So, yes, PostgreSQL column names are case-sensitive:
SELECT * FROM persons WHERE "first_Name" = 'xyz';
Also fix the incorrect double-quotes around 'xyz'
. Values (string literals) are enclosed in single quotes.
My standing advice is to use legal, lower-case names exclusively so double-quoting is not needed.