Come disattivare la modalità maiuscole forzata per i nomi di tabelle e colonne in HSQL?Disattiva la maiuscola per i nomi di tabelle e colonne in HSQL?
<artifactId>hsqldb</artifactId>
<version>2.3.1</version>
OS:Windows 7 x64
Come disattivare la modalità maiuscole forzata per i nomi di tabelle e colonne in HSQL?Disattiva la maiuscola per i nomi di tabelle e colonne in HSQL?
<artifactId>hsqldb</artifactId>
<version>2.3.1</version>
OS:Windows 7 x64
Non sono sicuro, ho capito il problema in modo corretto, ma solo cercando di mettere qualche sforzo.
SET DATABASE COLLATION SQL_TEXT_UCC
Può essere che si può fare riferimento http://hsqldb.org/doc/guide/dbproperties-chapt.html
Dalla documentazione, sembra essere la cosa giusta da usare. Sfortunatamente, anche aggiungendo questa dichiarazione al mio script di creazione del DB, i confronti sembrano ancora eseguiti con maiuscole e minuscole. –
Nota: la votazione in serie verrà annullata alla fine della giornata. Non essere sorpreso quando perdi 200 rep domani. Cheating il sistema non funziona in questo modo. – Adriaan
NON UTILIZZARE QUESTO, dalle specifiche non sui ** nomi ** ma sui dati all'interno dei campi ** VARCHAR **. –
Le regole attorno a questo sono spiegati nel HSQLDB documentation:
Quando un oggetto di database viene creato con una delle affermazioni creano o rinominato con il Istruzione ALTER, se il nome è racchiuso tra virgolette doppie , il nome esatto viene utilizzato come forma case-normal. Ma se è non racchiuso tra virgolette, il nome viene convertito in lettere maiuscole e questa versione maiuscola è memorizzata nel database come il caso normale .
regole maiuscole e minuscole per gli identificatori possono essere descritte semplicemente come segue:
- tutte le parti di istruzioni SQL vengono convertiti in maiuscolo prima della lavorazione, ad eccezione di identificatori tra virgolette doppie e stringhe in singolo preventivi
- identificativi, sia non quotati che con virgolette doppie, vengono quindi considerati sensibili alle maiuscole e alle minuscole
- la maggior parte dei motori di database segue la stessa regola, tranne, per alcuni aspetti, MySQL e MS SQLServer.
AFAIK questo comportamento non può essere disattivato. (Vale la pena notare che SQL standard è case-insensitive quando identificatori tra virgolette non vengono utilizzati.) Ma, come detto sopra, un identificatore minuscole può essere specificato racchiudendo tra virgolette, ad esempio:
CREATE TABLE "lowercasetablename" ("lowercasecolname" INT);
SELECT "lowercasecolname" FROM "lowercasetablename";
Memorizzazione di nomi in maiuscolo è richiesto dallo standard SQL. Non penso che puoi disattivarlo in HSQLDB –
puoi provare sinonimi, esempio e ddl sotto CREA SYNONYM REG PER OTHER_SCHEMA.REGISTRATION_DETAIL_TABLE ; SELECT R_ID, R_DATE FROM REG WHERE R_DATA> CURRENT_DATE - 3 DAY –