Maison > base de données > tutoriel mysql > Pourquoi ma requête SQL échoue-t-elle avec « la colonne... n'existe pas » en raison du respect de la casse ?

Pourquoi ma requête SQL échoue-t-elle avec « la colonne... n'existe pas » en raison du respect de la casse ?

Barbara Streisand
Libérer: 2025-01-13 06:08:42
original
325 Les gens l'ont consulté

Why Does My SQL Query Fail with

Erreurs de sensibilité à la casse PostgreSQL et de requête SQL : "la colonne... n'existe pas"

L'exécution de jointures SQL peut parfois entraîner une erreur frustrante "la colonne 'nom_colonne' n'existe pas". Cela provient souvent d'une incompatibilité de cas entre le nom de la colonne dans votre requête et le nom réel, sensible à la casse, défini dans le schéma de la base de données. PostgreSQL, contrairement à certains autres systèmes de bases de données, y est particulièrement sensible.

Le problème :

Considérez cette requête défaillante :

<code class="language-sql">select sim.id as idsim, 
       num.id as idnum 
from main_sim sim 
  left join main_number num on (FK_Numbers_id=num.id);</code>
Copier après la connexion

Le message d'erreur pointe vers la colonne "FK_Numbers_id" inexistante dans la table main_sim.

La solution :

La colonne existe, mais la bonne majuscule est cruciale. La nature sensible à la casse de PostgreSQL nécessite une correspondance précise. La requête corrigée est :

<code class="language-sql">select sim.id as idsim, 
       num.id as idnum 
from main_sim sim 
  left join main_number num on ("FK_Numbers_id" = num.id);</code>
Copier après la connexion

Pourquoi cela fonctionne :

Mettre le nom de la colonne "FK_Numbers_id" entre guillemets doubles oblige PostgreSQL à le traiter littéralement, quelle que soit la casse. Sans les guillemets, PostgreSQL interprète le nom de la colonne selon ses règles de casse par défaut, conduisant à l'erreur. L'utilisation de guillemets doubles garantit une correspondance exacte avec la définition du schéma de base de données.

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