¿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?

Author: Erwin Brandstetter, 2014-01-02

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, , 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.

Lea el manual aquí.

Mi consejo permanente es usar nombres legales en minúsculas exclusivamente para que no sea necesario citar dos veces.

 168
Author: Erwin Brandstetter,
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

Para citar la documentación :

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
 10
Author: Eugene Yarmash,
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.

 2
Author: randomness,
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