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