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

Hvad gør anførselstegn omkring tabelnavnet helt præcist?

Angivelse af dobbelte anførselstegn omkring en identifikator i Oracle får Oracle til at behandle identifikatoren som case-sensitive i stedet for at bruge standarden for case-insensitivity. Hvis du opretter en tabel (eller en kolonne) med dobbelte anførselstegn omkring navnet, skal du altid henvise til identifikatoren med dobbelte anførselstegn og ved at angive sagen korrekt (med undtagelse af alle store bogstaver, hvor dobbelte anførselstegn er meningsløse ).

Under dækkene laver Oracle altid identifikation, der skelner mellem store og små bogstaver. Men det kaster altid identifikatorer, der ikke er dobbelt-citeret, til store bogstaver, før matchningen udføres. Hvis du sætter dobbelte anførselstegn omkring en identifikator, springer Oracle over castingen til store bogstaver.

Så hvis du gør noget som

CREATE TABLE my_table( 
  col1 number,
  col2 number
)

du kan

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

men noget lignende

SELECT * FROM "my_table" 

vil mislykkes.

På den anden side, hvis du gør noget som

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

du kan ikke gøre

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

men dette

SELECT * FROM "my_other_table" 

vil virke



  1. AWS Database Migration Service DMS

  2. Hvornår skal du bruge STRAIGHT_JOIN med MySQL

  3. Hvorfor returnerer CONNECT BY LEVEL på en tabel ekstra rækker?

  4. GROUP BY i Postgres - ingen lighed for JSON-datatypen?