¿Los nombres de columna de PostgreSQL distinguen entre mayúsculas y minúsculas?
Tengo una tabla db decir, persons
en Postgres transmitida por otro equipo que tiene un nombre de columna decir, "first_Name"
. Ahora estoy tratando de usar PG commander para consultar esta tabla en este nombre de columna.
select * from persons where first_Name="xyz";
Y solo devuelve
ERROR: la columna "first_Name" no existe
¿No está seguro de si estoy haciendo algo tonto o hay una solución a este problema que me estoy perdiendo?
3 answers
Todos los identificadores (incluidos los nombres de columna) que no están entre comillas dobles se pliegan a minúsculas en PostgreSQL. Los nombres de columna que se crearon con comillas dobles y, por lo tanto, conservaron letras mayúsculas (y/u otras violaciones de sintaxis) tienen que ser comillas dobles por el resto de su vida. Entonces, sí , los nombres de las columnas de PostgreSQL distinguen entre mayúsculas y minúsculas:
SELECT * FROM persons WHERE "first_Name" = 'xyz';
También corrige las comillas dobles incorrectas alrededor de 'xyz'
. Los valores (literales de cadena) están encerrados en single quotes.
Mi consejo permanente es usar nombres legales en minúsculas exclusivamente para que no sea necesario citar dos veces.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-30 14:02:20
Las palabras clave y los identificadores sin comillas no distinguen entre mayúsculas y minúsculas. Por lo tanto:
UPDATE MY_TABLE SET A = 5;
Puede escribirse equivalentemente como:
uPDaTE my_TabLE SeT a = 5;
Citar un identificador lo hace sensible a mayúsculas, mientras que los nombres sin comillas siempre se pliegan en minúsculas:
UPDATE "my_table" SET "a" = 5; // equivalent to the above examples
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-27 15:37:38
Los nombres de columna que son mayúsculas o minúsculas tienen que ser doblemente entrecomillados en postgres sql. Así que la mejor convención será seguir todos los casos pequeños con subrayado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-28 03:45:46