Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

O que exatamente as aspas ao redor do nome da tabela fazem?


Colocar aspas duplas em torno de um identificador no Oracle faz com que o Oracle trate o identificador como diferenciando maiúsculas de minúsculas em vez de usar o padrão de distinção entre maiúsculas e minúsculas. Se você criar uma tabela (ou uma coluna) com aspas duplas ao redor do nome, você deve sempre referir-se ao identificador com aspas duplas e especificando corretamente o caso (com exceção de todos os identificadores em maiúsculas, onde aspas duplas não fazem sentido ).

Nos bastidores, a Oracle está sempre fazendo correspondência de identificadores com distinção entre maiúsculas e minúsculas. Mas sempre converte identificadores que não estão entre aspas duplas para maiúsculas antes de fazer a correspondência. Se você colocar aspas duplas em torno de um identificador, o Oracle ignorará a conversão para maiúsculas.

Então, se você fizer algo como
CREATE TABLE my_table( 
  col1 number,
  col2 number
)

você pode
SELECT * FROM my_table
SELECT * FROM MY_TABLE
SELECT * FROM My_Table
SELECT * FROM "MY_TABLE"

mas algo como
SELECT * FROM "my_table" 

vai falhar.

Por outro lado, se você fizer algo como
CREATE TABLE "my_other_table"( 
  col1 number,
  col2 number
)

Você não pode fazer
SELECT * FROM my_other_table
SELECT * FROM MY_OTHER_TABLE
SELECT * FROM My_Other_Table
SELECT * FROM "MY_OTHER_TABLE"

mas isso
SELECT * FROM "my_other_table" 

vai funcionar