2009-02-18 9 views

risposta

78

Mettere virgolette attorno a un identificatore a cause di Oracle Oracle per trattare l'identificatore come maiuscole e minuscole anziché utilizzare l'impostazione predefinita di insensibilità al maiuscolo/minuscolo. Se crei una tabella (o una colonna) con virgolette attorno al nome, devi sempre fare riferimento all'identificatore con virgolette doppie e specificando correttamente il caso (con l'eccezione di tutti gli identificatori maiuscoli, dove le virgolette sono prive di significato).

Sotto le coperture, Oracle esegue sempre la corrispondenza dell'identificatore con distinzione tra maiuscole e minuscole. Tuttavia, crea sempre identificatori che non vengono citati in maiuscolo prima di eseguire la corrispondenza. Se inserisci virgolette su un identificatore, Oracle salta il cast in lettere maiuscole.

Quindi, se fai qualcosa come

CREATE TABLE my_table( 
    col1 number, 
    col2 number 
) 

è possibile

SELECT * FROM my_table 
SELECT * FROM MY_TABLE 
SELECT * FROM My_Table 
SELECT * FROM "MY_TABLE" 

ma qualcosa di simile

SELECT * FROM "my_table" 

avrà esito negativo.

D'altra parte, se si fa qualcosa di simile

CREATE TABLE "my_other_table"( 
    col1 number, 
    col2 number 
) 

non si può fare

SELECT * FROM my_other_table 
SELECT * FROM MY_OTHER_TABLE 
SELECT * FROM My_Other_Table 
SELECT * FROM "MY_OTHER_TABLE" 

ma questo

SELECT * FROM "my_other_table" 

funzionerà

+1

Questa risposta lascia fuori il fatto che consente anche agli identificatori di contenere caratteri che altrimenti sarebbero illegali, come un carattere di spazio. Probabilmente è anche consigliabile utilizzare solo lettere maiuscole, cifre e trattini bassi. Fare così renderà la vita di tutti più facile. – jpmc26

9

Va aggiunto quegli identificatori tra virgolette può contenere caratteri speciali, ad es. "a-b c.d" è un identificatore valido.

Problemi correlati