Maison > base de données > tutoriel mysql > Pourquoi les guillemets autour des noms de tables Oracle affectent-ils l'exécution des requêtes ?

Pourquoi les guillemets autour des noms de tables Oracle affectent-ils l'exécution des requêtes ?

DDD
Libérer: 2025-01-14 22:27:50
original
336 Les gens l'ont consulté

Why Do Quotation Marks Around Oracle Table Names Affect Query Execution?

Guillemets doubles dans les noms de tables de la base de données Oracle : analyse d'importance

Un morceau de code NHibernate tente d'exécuter la requête suivante :

<code class="language-sql">SELECT * FROM "site" WHERE site_id = 3;</code>
Copier après la connexion

Le résultat est une erreur "La table ou la vue n'existe pas". Cependant, la requête suivante fonctionne correctement :

<code class="language-sql">SELECT * FROM site WHERE site_id = 3;</code>
Copier après la connexion

Cette différence résulte de la distinction faite par Oracle entre la sensibilité à la casse des identifiants.

Sensibilité à la casse des identifiants Oracle

Par défaut, Oracle traite les identifiants sans tenir compte de la casse, ce qui signifie que « site » et « Site » font référence à la même table. Toutefois, si vous placez un identifiant entre guillemets (" ") dans une requête, Oracle le traite comme étant sensible à la casse.

Impact sur la requête

Si une table est créée sans guillemets doubles, Oracle stockera son nom en majuscules. Par conséquent, les requêtes telles que "SELECT * FROM my_table" fonctionneront quelle que soit la casse.

Cependant, si vous placez le nom de la table entre guillemets lors de la création de la table ("CREATE TABLE "my_table""), Oracle conservera sa casse exacte. Dans ce cas, la requête doit utiliser la casse correcte lors du référencement de la table, telle que "SELECT * FROM "my_table"".

Le rôle de NHibernate

Dans NHibernate, vous pouvez spécifier des noms de table avec ou sans guillemets doubles. Si vous omettez les guillemets doubles, NHibernate suppose automatiquement des comparaisons insensibles à la casse. Cependant, NHibernate génère des requêtes SQL sensibles à la casse si des guillemets doubles sont présents dans le mappage.

Application pratique

Comprendre l'impact des guillemets doubles sur les noms de tables est essentiel pour les performances des requêtes. L'utilisation cohérente de guillemets doubles pour les tableaux sensibles à la casse garantit qu'Oracle trouve rapidement le bon tableau sans conversions inutiles. Sinon, des erreurs ou des problèmes de performances pourraient en résulter.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal