sql >> Database >  >> RDS >> Oracle

Reden waarom orakel hoofdlettergevoelig is?

Oracle-ID's (tabelnamen, kolomnamen, enz.) zijn standaard hoofdletter-ongevoelig . U kunt ze hoofdlettergevoelig maken door er aanhalingstekens omheen te gebruiken (bijv.:SELECT * FROM "My_Table" WHERE "my_field" = 1 ). SQL-sleutelwoorden (SELECT , WHERE , JOIN , enz.) zijn altijd hoofdlettergevoelig.

Aan de andere kant zijn stringvergelijkingen hoofdlettergevoelig (bijv.:WHERE field='STRING' komt alleen overeen met kolommen waar het 'STRING' . is ) standaard. Je kunt ze hoofdletterongevoelig maken door NLS_COMP . in te stellen en NLS_SORT naar de juiste waarden (bijv.:LINGUISTIC en BINARY_CI , respectievelijk).

Opmerking:bij het opvragen van datadictionary-weergaven (bijv.:dba_tables ) de namen zijn in hoofdletters als je ze zonder aanhalingstekens hebt gemaakt, en de regels voor het vergelijken van tekenreeksen zoals uitgelegd in de tweede alinea zijn hier van toepassing.

Sommige databases (Oracle, IBM DB2, PostgreSQL, enz.) voeren standaard hoofdlettergevoelige tekenreeksvergelijkingen uit, andere zijn niet hoofdlettergevoelig (SQL Server, MySQL, SQLite). Dit is absoluut niet standaard, dus houd er rekening mee wat uw db-instellingen zijn.



  1. 5 trucs voor het garanderen van piekprestaties van SQL Server

  2. SQLiteStatement voer een SELECT / INSERT / DELETE / UPDATE uit

  3. De juiste manier om een ​​unieke beperking te implementeren die meerdere NULL-waarden in SQL Server toestaat

  4. Hoe kunt u historische opzoekwaarden in een database het beste beheren?