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

Motivo per cui Oracle fa distinzione tra maiuscole e minuscole?

Per impostazione predefinita, gli identificatori Oracle (nomi di tabelle, nomi di colonne, ecc.) non fanno distinzione tra maiuscole e minuscole . Puoi renderli sensibili alle maiuscole usando le virgolette intorno a loro (ad esempio:SELECT * FROM "My_Table" WHERE "my_field" = 1 ). Parole chiave SQL (SELECT , WHERE , JOIN , ecc.) non fanno sempre distinzione tra maiuscole e minuscole.

D'altra parte, i confronti tra stringhe fanno distinzione tra maiuscole e minuscole (es:WHERE field='STRING' corrisponderà solo alle colonne in cui è 'STRING' ) per impostazione predefinita. Puoi renderli senza distinzione tra maiuscole e minuscole impostando NLS_COMP e NLS_SORT ai valori appropriati (es:LINGUISTIC e BINARY_CI , rispettivamente).

Nota:quando si interrogano le viste del dizionario dei dati (ad es.:dba_tables ) i nomi saranno in maiuscolo se li hai creati senza virgolette e qui si applicheranno le regole di confronto delle stringhe come spiegato nel secondo paragrafo.

Alcuni database (Oracle, IBM DB2, PostgreSQL, ecc.) eseguiranno confronti di stringhe con distinzione tra maiuscole e minuscole per impostazione predefinita, altri senza distinzione tra maiuscole e minuscole (SQL Server, MySQL, SQLite). Questo non è affatto standard, quindi tieni presente quali sono le tue impostazioni db.