Maison > base de données > tutoriel mysql > Pourquoi ma requête de jointure Oracle SQL renvoie-t-elle ORA-00904 : Identifiant invalide ?

Pourquoi ma requête de jointure Oracle SQL renvoie-t-elle ORA-00904 : Identifiant invalide ?

Susan Sarandon
Libérer: 2025-01-17 08:52:11
original
283 Les gens l'ont consulté

Why is my Oracle SQL join query returning ORA-00904: Invalid Identifier?

Dépannage ORA-00904 : identifiant non valide dans les jointures Oracle SQL

Les requêtes de jointure Oracle SQL peuvent parfois générer l'erreur ORA-00904: invalid identifier. Cette erreur signifie un problème avec les identifiants (noms de table ou de colonne) utilisés dans votre requête.

Cause fondamentale :

Cette erreur résulte généralement du référencement d’objets de base de données inexistants ou mal identifiés. Les coupables courants incluent les fautes de frappe dans les noms de tables ou de colonnes, ou l'utilisation d'une casse incorrecte.

Exemple illustratif :

Considérez cette requête :

<code class="language-sql">SELECT Employee.EMPLID as EmpID, 
       Employee.FIRST_NAME AS Name,
       Team.DEPARTMENT_CODE AS TeamID, 
       Team.Department_Name AS teamname
FROM PS_TBL_EMPLOYEE_DETAILS Employee
INNER JOIN PS_TBL_DEPARTMENT_DETAILS Team 
ON Team.DEPARTMENT_CODE = Employee.DEPTID;</code>
Copier après la connexion
Copier après la connexion

Cette requête peut produire l'erreur ORA-00904 car « Équipe » est placé entre guillemets doubles. Oracle traite les identifiants entre guillemets comme étant sensibles à la casse. Ainsi, "Team.DEPARTMENT_CODE" diffère de "team.DEPARTMENT_CODE".

Résolution :

Pour résoudre ce problème, vérifiez tous les identifiants de votre requête par rapport au schéma de base de données réel. Portez une attention particulière à l'orthographe, aux majuscules et à la présence de guillemets doubles inutiles. Oracle n'est pas sensible à la casse par défaut, sauf si vous utilisez des guillemets doubles.

La version corrigée de l'exemple de requête serait :

<code class="language-sql">SELECT Employee.EMPLID as EmpID, 
       Employee.FIRST_NAME AS Name,
       Team.DEPARTMENT_CODE AS TeamID, 
       Team.Department_Name AS teamname
FROM PS_TBL_EMPLOYEE_DETAILS Employee
INNER JOIN PS_TBL_DEPARTMENT_DETAILS Team 
ON Team.DEPARTMENT_CODE = Employee.DEPTID;</code>
Copier après la connexion
Copier après la connexion

(Remarque : bien que l'exemple ne montre aucune différence apparente, l'original pourrait avoir une incompatibilité de casse dans le schéma de base de données qui n'est pas visible ici. Vérifiez toujours les noms d'objets de votre base de données.) Suppression Les guillemets inutiles sont également une étape clé.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal