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 ?
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!