Oracle
 sql >> Base de données >  >> RDS >> Oracle

Que font exactement les guillemets autour du nom de la table ?

L'insertion de guillemets doubles autour d'un identifiant dans Oracle oblige Oracle à traiter l'identifiant comme sensible à la casse plutôt que d'utiliser la valeur par défaut d'insensibilité à la casse. Si vous créez un tableau (ou une colonne) avec des guillemets autour du nom, vous devez toujours faire référence à l'identifiant avec des guillemets doubles et en précisant correctement la casse (à l'exception de tous les identifiants en majuscules, où les guillemets doubles n'ont pas de sens ).

Sous les couvertures, Oracle fait toujours une correspondance d'identifiant sensible à la casse. Mais il convertit toujours les identifiants qui ne sont pas entre guillemets doubles en majuscules avant de faire la correspondance. Si vous mettez des guillemets autour d'un identifiant, Oracle ignore la conversion en majuscules.

Donc, si vous faites quelque chose comme

CREATE TABLE my_table( 
  col1 number,
  col2 number
)

vous pouvez

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

mais quelque chose comme

SELECT * FROM "my_table" 

échouera.

D'autre part, si vous faites quelque chose comme

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

vous ne pouvez pas faire

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

mais ça

SELECT * FROM "my_other_table" 

fonctionnera