Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pourquoi Oracle est-il sensible à la casse ?

Par défaut, les identifiants Oracle (noms de table, noms de colonne, etc.) sont insensibles à la casse . Vous pouvez les rendre sensibles à la casse en utilisant des guillemets autour d'eux (par exemple :SELECT * FROM "My_Table" WHERE "my_field" = 1 ). Mots clés SQL (SELECT , WHERE , JOIN , etc.) sont toujours insensibles à la casse.

D'autre part, les comparaisons de chaînes sont sensibles à la casse (ex :WHERE field='STRING' ne correspondra qu'aux colonnes où il s'agit de 'STRING' ) par défaut. Vous pouvez les rendre insensibles à la casse en définissant NLS_COMP et NLS_SORT aux valeurs appropriées (ex :LINGUISTIC et BINARY_CI , respectivement).

Remarque :lors de l'interrogation des vues du dictionnaire de données (par exemple :dba_tables ) les noms seront en majuscules si vous les avez créés sans guillemets, et les règles de comparaison de chaînes expliquées dans le deuxième paragraphe s'appliqueront ici.

Certaines bases de données (Oracle, IBM DB2, PostgreSQL, etc.) effectueront par défaut des comparaisons de chaînes sensibles à la casse, d'autres insensibles à la casse (SQL Server, MySQL, SQLite). Ce n'est en aucun cas standard, alors soyez conscient de vos paramètres de base de données.