Pregunta

Pregunta simple, ¿hay alguna forma de omitir las comillas dobles en PostgreSQL?

Aquí hay un ejemplo, dando select * from A;, recuperaré ERROR: relation "a" does not exist, y tendría que dar select * from "A"; para obtener el resultado real.

¿Hay alguna forma de no hacer el segundo y, en cambio, hacer el primero en PostgreSQL?

¿Fue útil?

Solución

Su problema con esta consulta comenzó cuando creó su tabla.Cuando cree su tabla, no use comillas.

Utilice esto:

CREATE TABLE a ( ... );

Esto no:

CREATE TABLE "A" ( ... );

Esto último hará que siempre tengas que citarlo más tarde.El primero lo convierte en un nombre normal y puede usar SELECT * FROM a; o SELECT * FROM A;

Si no puede simplemente volver a crear su tabla, use la sintaxis ALTER TABLE:

ALTER TABLE "A" RENAME TO a;

Otros consejos

Se requieren comillas dobles si incluye letras mayúsculas en el nombre de su tabla en postgres

para evitar los requisitos, nombre su tabla "a"

Postgresql tiene algún comportamiento particular con respectoa la sensibilidad entre comillas y mayúsculas y minúsculas: dobla cada identificador no citado a minúsculas (también en el momento de la creación) y luego distingue entre mayúsculas y minúsculas.

Las comillas dobles en los identificadores solo son necesarias cuando el identificador (nombre de la tabla, nombre de la columna, etc.) se definió (en el momento de la creación del esquema) con letras mayúsculas (algunas o todas) y entre comillas dobles.

En ese caso (que desaconsejo), cuando use ese identificador, debe escribirlo de la misma manera: distingue entre mayúsculas y minúsculas (escriba la letra mayúscula / minúscula exactamente como se define) y entre comillas dobles.

En otros casos, puede utilizar identificadores sin comillas y trabajar siempre sin distinción entre mayúsculas y minúsculas.

No use letras mayúsculas en el nombre de su tabla o en el nombre de su columna, si está usando tal cosa, entonces el postgres requerirá comillas dobles para acceder a él.

Consulte la descripción detallada de lo que está sucediendo aquí .

Los nombres de las tablas del servidor PostgreSQL distinguen entre mayúsculas y minúsculas, pero están obligados a ser minúsculas por defecto: cuando escribe CREATE TABLE AAA, se convertirá en CREATE TABLE aaa antes de la ejecución de la consulta.

Los nombres entre comillas dobles mantienen su caso como estaba, por lo que después de CREATE TABLE "AaA" obtienes la tabla AaA y tienes que escribirla entre comillas dobles una y otra vez.

No tengo idea de por qué lo hicieron :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top