Quotes names in H2 are case sensitive, zgodnie z wymaganiami specyfikacji SQL. Oznacza to, że to będzie działać:
CREATE TABLE "testquote" (dummy INT, "quotedDummy" INT);
SELECT * FROM "testquote";
ale to nie będzie:
SELECT * FROM "TestQuote";
SELECT * FROM "TESTQuote";
SELECT * FROM "TESTQUOTE";
Unquotes names are not case sensitive in H2. Są one zwykle konwertowane na wielkie litery (tak jak w Oracle i innych bazach danych). Oznacza to, że oświadczenia
CREATE TABLE test (dummy INT);
SELECT * FROM test;
są takie same jak
CREATE TABLE "TEST" ("DUMMY" INT);
SELECT * FROM "TEST";
W H2, że zachowuje się w taki sam sposób, jak Oracle. To trochę różni się od tego, jak inne bazy danych, takie jak MySQL i PostgreSQL, obsługują nazwy identyfikatorów. H2 ma funkcję kompatybilności: jeśli dodasz ;DATABASE_TO_UPPER=FALSE
do adresu URL bazy danych, identyfikatory pustych danych nie zostaną przekonwertowane na wielkie litery, co oznacza, że uwzględniają one również wielkość liter. Ale musisz to dodać podczas tworzenia bazy danych i za każdym razem, gdy ją używasz (jeśli dodasz ustawienia dla istniejących baz danych, identyfikatory istniejących obiektów są już konwertowane na wielkie).
Nawiasem mówiąc, nie ma to nic wspólnego z function UPPER, która jest przeznaczona dla danych. Twoje pytanie dotyczy identyfikatorów, a nie danych.
Przeczytaj standard SQL i naucz się korzystać z UPPERCASE w zależności od potrzeb. Efektem cytatów jest zapobieganie domyślnemu odwzorowaniu od niższego do dużego. – bmargulies
@bmargulies czy 'UPPERCASE' działa nawet z H2? Nie można go znaleźć w dokumentacji SQL H2. – Drahakar
Nie jako funkcja, tylko przeliteruj je. "TEST" pasuje do zwykłego testu. – bmargulies