Quotes names in H2 are case sensitive, come richiesto dalle specifiche SQL. Ciò significa che questo funzionerà:
CREATE TABLE "testquote" (dummy INT, "quotedDummy" INT);
SELECT * FROM "testquote";
ma questo non sarà:
SELECT * FROM "TestQuote";
SELECT * FROM "TESTQuote";
SELECT * FROM "TESTQUOTE";
Unquotes names are not case sensitive in H2. Normalmente vengono convertiti in maiuscolo (come in Oracle e altri database). Ciò significa che le dichiarazioni
CREATE TABLE test (dummy INT);
SELECT * FROM test;
sono le stesse
CREATE TABLE "TEST" ("DUMMY" INT);
SELECT * FROM "TEST";
Al H2 si comporta nello stesso modo come Oracle. Questo è un po 'diverso su come altri database come MySQL e PostgreSQL gestiscono i nomi degli identificatori. H2 ha una caratteristica di compatibilità: se si aggiunge ;DATABASE_TO_UPPER=FALSE
all'URL del database, gli identificatori non quotati non vengono convertiti in lettere maiuscole, il che significa che sono anche case sensitive. Ma è necessario aggiungere questo quando si crea il database e ogni volta che lo si utilizza (se si aggiunge l'impostazione per i database esistenti, gli identificatori degli oggetti esistenti sono già convertiti in maiuscolo).
A proposito, questo non ha nulla a che fare con lo function UPPER, che è pensato per i dati. La tua domanda riguarda gli identificatori, non i dati.
fonte
2012-05-29 05:10:21
Leggere lo standard SQL e imparare a utilizzare MAIUSCOLE come appropriato, penso. L'effetto delle virgolette è quello di impedire il mapping predefinito da minuscolo a maiuscolo. – bmargulies
@bmargulies fa 'UPPERCASE' funziona anche con H2? Impossibile trovarlo sulla documentazione SQL di H2. – Drahakar
Non come una funzione, basta scriverli. "TEST" è ciò che corrisponde alla prova semplice. – bmargulies