When do Postgres column or table names need quotes and when don't they?

后端 未结 2 1968
粉色の甜心
粉色の甜心 2020-12-01 20:05

Let\'s consider the following postgres query:

SELECT * 
FROM \"MY_TABLE\"
WHERE \"bool_var\"=FALSE 
 AND \"str_var\"=\'something\';

The que

相关标签:
2条回答
  • 2020-12-01 20:50

    Thanks to @TimBiegeleisen's comment, I was able to pinpoint the problem; I used a reserved keyword ("user") as a column name.

    Link to reserved keywords in the doc: https://www.postgresql.org/docs/current/sql-keywords-appendix.html.

    Now I know not to use quotes to query column names, but rather to avoid reserved keywords as column names.

    0 讨论(0)
  • 2020-12-01 20:55

    PostgreSQL converts all names (table name, column names etc) into lowercase if you don't prevent it by double quoting them in create table "My_Table_ABC" ( "My_Very_Upper_and_Lowercasy_Column" numeric,...). If you have names like this, you must always double quote those names in selects and other references.

    I would recommend not creating tables like this and also not using chars outside a-z, 0-9 and _. You can not guarantee that every piece of software, library etc ever to be used against your database will support case-sensitivity. It's also tedious to remember and doing this double quoting.

    0 讨论(0)
提交回复
热议问题