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

Årsagen til, at Oracle skelner mellem store og små bogstaver?

Som standard er Oracle-identifikatorer (tabelnavne, kolonnenavne osv.) ufølsomme. . Du kan gøre dem skelne mellem store og små bogstaver ved at bruge anførselstegn omkring dem (f.eks.:SELECT * FROM "My_Table" WHERE "my_field" = 1 ). SQL-nøgleord (SELECT , WHERE , JOIN osv.) er altid ufølsomme for store og små bogstaver.

På den anden side skelnes der mellem store og små bogstaver i strengsammenligninger (f.eks.:WHERE field='STRING' vil kun matche kolonner, hvor det er 'STRING' ) som standard. Du kan gøre dem ufølsomme for store og små bogstaver ved at indstille NLS_COMP og NLS_SORT til de relevante værdier (f.eks.:LINGUISTIC og BINARY_CI , henholdsvis).

Bemærk:Når du spørger til dataordbogsvisninger (f.eks.:dba_tables ) vil navnene stå med store bogstaver, hvis du har oprettet dem uden anførselstegn, og reglerne for strengsammenligning som forklaret i andet afsnit vil gælde her.

Nogle databaser (Oracle, IBM DB2, PostgreSQL osv.) udfører som standard sammenligning af store og små bogstaver i strenge, andre er ufølsomme for store og små bogstaver (SQL Server, MySQL, SQLite). Dette er på ingen måde standard, så vær bare opmærksom på, hvad dine db-indstillinger er.



  1. Sådan opdaterer du visning i MySQL

  2. Generer datointerval fra to datokolonner

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

  4. PostgreSQL forkert sortering