L'inserimento di virgolette attorno a un identificatore in Oracle fa sì che Oracle tratti l'identificatore come maiuscolo/minuscolo anziché utilizzare l'impostazione predefinita di distinzione tra maiuscole e minuscole. Se crei una tabella (o una colonna) con virgolette intorno al nome, devi sempre fare riferimento all'identificatore tra virgolette e specificando correttamente le maiuscole (ad eccezione di tutti gli identificatori maiuscoli, dove le virgolette sono prive di significato ).
Sotto le coperte, Oracle esegue sempre la corrispondenza degli identificatori con distinzione tra maiuscole e minuscole. Ma esegue sempre il cast di identificatori che non sono tra virgolette doppie in maiuscolo prima di eseguire la corrispondenza. Se metti tra virgolette attorno a un identificatore, Oracle salta il casting in maiuscolo.
Quindi, se fai qualcosa come
CREATE TABLE my_table(
col1 number,
col2 number
)
puoi
SELECT * FROM my_table
SELECT * FROM MY_TABLE
SELECT * FROM My_Table
SELECT * FROM "MY_TABLE"
ma qualcosa come
SELECT * FROM "my_table"
fallirà.
D'altra parte, se fai qualcosa del tipo
CREATE TABLE "my_other_table"(
col1 number,
col2 number
)
non puoi 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à