lpad postgresql example
Omitiendo la doble cita para hacer consulta en PostgreSQL (5)
No use letras mayúsculas en el nombre de su tabla o en el nombre de la columna, si está usando tal cosa, los postgres requerirán una comilla doble para acceder a ella.
Pregunta simple, ¿hay alguna manera de omitir la cita doble 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 lo segundo y, en cambio, hacer lo primero en PostgreSQL?
Por favor vea la descripción detallada de lo que está pasando here .
Los nombres de las tablas del servidor PostgreSQL distinguen entre mayúsculas y minúsculas, pero se las obliga a minúsculas de forma predeterminada: 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 tal como era, así que después de CREATE TABLE "AaA"
obtienes la tabla AaA
y tienes que escribirla entre comillas una y otra vez.
No tengo idea de por qué lo hicieron :)
Postgresql tiene algún comportamiento en particular con respecto a la cita y la sensibilidad del caso: dobla todos los identificadores no citados a minúsculas (también en el momento de la creación) y, a continuación, funciona con sensibilidad al caso.
Las comillas dobles en los identificadores solo son necesarias cuando se definió el nombre de la tabla (o el nombre del campo o lo que sea) (en el momento de la creación del esquema):
- con letras mayúsculas (algunas o todas)
- con citas
En ese caso (contra el que aconsejo), DEBE hacer lo siguiente cuando se refiera a él en una consulta:
- distingue entre mayúsculas y minúsculas (escriba mayúscula / minúscula exactamente como se define)
- usar citas
En otro caso, puede usar identificadores que no estén entre comillas (excepto si los necesitan, por supuesto) y trabajar siempre con mayúsculas y minúsculas.
Su problema con esta consulta comenzó cuando creó su tabla. Cuando crees tu tabla, no uses comillas.
Utilizar esta:
CREATE TABLE a ( ... );
No esta:
CREATE TABLE "A" ( ... );
Este último lo hará para que siempre tenga que citarlo más tarde. El primero lo convierte en un nombre normal y puede utilizar SELECT * FROM a;
o SELECT * FROM A;
Si no puede simplemente recrear su tabla, use la sintaxis de ALTER TABLE
:
ALTER TABLE "A" RENAME TO a;
se requieren comillas dobles si incluye letras mayúsculas en el nombre de la tabla en Postgres
para evitar los requisitos nombra tu tabla "a"