Oracle
 sql >> Database >  >> RDS >> Oracle

Che cosa fanno esattamente le virgolette attorno al nome della tabella?

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 doppiati 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à