2016-03-24 42 views
5

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

+1

Memorizzazione di nomi in maiuscolo è richiesto dallo standard SQL. Non penso che puoi disattivarlo in HSQLDB –

+0

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 –

risposta

2

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

+0

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. –

+0

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

+0

NON UTILIZZARE QUESTO, dalle specifiche non sui ** nomi ** ma sui dati all'interno dei campi ** VARCHAR **. –

9

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";