Maison >base de données >tutoriel mysql >Pourquoi ma requête PostgreSQL génère-t-elle une erreur « La colonne n'existe pas » même si la colonne existe ?

Pourquoi ma requête PostgreSQL génère-t-elle une erreur « La colonne n'existe pas » même si la colonne existe ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-20 19:51:14668parcourir

Why Does My PostgreSQL Query Throw a

Erreur « la colonne n'existe pas » de PostgreSQL : un problème de sensibilité à la casse

Un casse-tête courant chez PostgreSQL est l'erreur « la colonne n'existe pas », même lorsque la colonne est clairement définie. Cela vient souvent de problèmes de sensibilité à la casse. Prenons cet exemple :

<code class="language-sql">SELECT Continent
FROM network.countries
WHERE Continent IS NOT NULL
AND Continent <> ''
LIMIT 5</code>

Cette requête apparemment correcte pourrait renvoyer :

<code>ERROR: column "continent" does not exist
Hint: Perhaps you meant to reference the column "countries.Continent".
Position: 8</code>

La solution : dénomination précise des colonnes avec des guillemets doubles

Le correctif est simple : placez le nom de la colonne entre guillemets :

<code class="language-sql">SELECT "Continent"
FROM network.countries
WHERE "Continent" IS NOT NULL
AND "Continent" <> ''
LIMIT 5</code>

En citant "Continent", vous indiquez explicitement à PostgreSQL de traiter le nom comme une chaîne littérale sensible à la casse, évitant ainsi les mauvaises interprétations.

Pourquoi les doubles citations sont importantes

PostgreSQL gère généralement les noms de colonnes sans tenir compte de la casse. Cependant, les noms de colonnes sans guillemets sont souvent convertis en minuscules en interne. Si le nom de votre colonne est en casse mixte (comme « Continent ») et que vous le référencez sans guillemets, PostgreSQL peut rechercher une colonne « continent » en minuscules, conduisant à l'erreur. Les guillemets doubles garantissent une correspondance exacte, résolvant ainsi l'ambiguïté.

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!

Déclaration:
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