primera - sql distingue entre mayúsculas y minúsculas
¿Los nombres de las columnas PostgreSQL distinguen entre mayúsculas y minúsculas? (3)
Tengo una tabla db decir, persons
en Postgres dictadas 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 regresa
ERROR: la columna "first_Name" no existe
¿No estoy seguro de si estoy haciendo algo tonto o hay una solución alternativa a este problema que me falta?
Los nombres de las columnas que son mayúsculas o minúsculas tienen que ser dobles en postgres sql. Entonces la mejor convención será seguir todos los casos pequeños con guión bajo.
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 de manera equivalente como:
uPDaTE my_TabLE SeT a = 5;
Al citar un identificador, se distingue entre mayúsculas y minúsculas, mientras que los nombres sin comillas siempre se pliegan en minúsculas:
UPDATE "my_table" SET "a" = 5; // equivalent to the above examples
Todos los identificadores (incluidos los nombres de columna) que no están doblemente citados se doblan a minúsculas en PostgreSQL. Los nombres de columna que se crearon con comillas dobles y, por lo tanto, letras mayúsculas retenidas (y / u otras violaciones de sintaxis) deben ser citadas 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 arregla las comillas dobles incorrectas alrededor de ''xyz''
. Los valores (literales de cadena) están entre comillas simples .
Mi consejo permanente es utilizar nombres legales en minúsculas exclusivamente, por lo que no es necesario hacer doble cita.