tag img color attribute sql database h2 double-quotes

sql - img - title html attribute



Haga que H2 trate el nombre citado y el nombre no citado como el mismo (1)

H2 parece hacer una diferencia entre nombre con comillas y nombre sin comillas. ¿Hay alguna manera de hacer que se traten de la misma manera?

Aquí están las pruebas que he hecho:

CREATE TABLE test (dummy INT); CREATE TABLE "testquote" (dummy INT, "quotedDummy" INT);

Aquí están las consultas:

SELECT * FROM test; --work SELECT * FROM "test"; -- doesn''t work SELECT * FROM "testquote"; --work SELECT * FROM testquote; --doesn''t work SELECT dummy FROM "testquote"; --work SELECT quotedDummy FROM "testquote"; --doesn''t work SELECT "quotedDummy" FROM "testquote"; --work

¿Qué puedo hacer para que esas consultas funcionen con H2?


Los nombres de las citas en H2 distinguen entre mayúsculas y minúsculas , como lo requiere la especificación SQL. Eso significa que esto funcionará:

CREATE TABLE "testquote" (dummy INT, "quotedDummy" INT); SELECT * FROM "testquote";

pero esto no lo hará:

SELECT * FROM "TestQuote"; SELECT * FROM "TESTQuote"; SELECT * FROM "TESTQUOTE";

Los nombres entre comillas no distinguen entre mayúsculas y minúsculas en H2 . Normalmente se convierten en mayúsculas (como en Oracle y otras bases de datos). Eso significa las declaraciones

CREATE TABLE test (dummy INT); SELECT * FROM test;

son lo mismo que

CREATE TABLE "TEST" ("DUMMY" INT); SELECT * FROM "TEST";

En eso H2 se comporta de la misma manera que Oracle. Esto es un poco diferente sobre cómo otras bases de datos como MySQL y PostgreSQL manejan los nombres de los identificadores. H2 tiene una función de compatibilidad: si agrega ;DATABASE_TO_UPPER=FALSE a la URL de la base de datos, los identificadores entre comillas no se convierten a mayúsculas, lo que significa que también distinguen entre mayúsculas y minúsculas. Pero necesita agregar esto al crear la base de datos, y cada vez que la use (si agrega la configuración de las bases de datos existentes, los identificadores de los objetos existentes ya se convertirán en mayúsculas).

Por cierto, esto no tiene nada que ver con la función SUPERIOR , que está destinada a los datos. Su pregunta es sobre identificadores, no datos.