Maison >développement back-end >tutoriel php >Pourquoi ma requête Postgresql renvoie-t-elle une erreur « Le nom de la colonne n'existe pas » ?

Pourquoi ma requête Postgresql renvoie-t-elle une erreur « Le nom de la colonne n'existe pas » ?

DDD
DDDoriginal
2024-12-03 15:15:12339parcourir

Why Does My Postgresql Query Return a

Dépannage de l'erreur « Le nom de la colonne n'existe pas » dans les requêtes Postgresql

Lorsque vous travaillez avec des bases de données Postgresql, il est crucial de respecter la syntaxe appropriée et conventions de dénomination pour éviter les erreurs. Un défi courant consiste à rencontrer l'erreur « Le nom de la colonne n'existe pas » lors de l'exécution de la requête.

Considérez la requête suivante :

SELECT * 
FROM employee 
WHERE "lName" LIKE "Smith"

Lors de l'exécution de cette requête, vous pourriez recevoir une erreur indiquant que la colonne "Smith" n'existe pas. En effet, Postgresql interprète « Smith » entre guillemets doubles comme un identifiant (nom de colonne), et non comme une chaîne.

Pour résoudre ce problème, les guillemets doubles doivent être remplacés par des guillemets simples pour désigner une chaîne littérale :

SELECT * 
FROM employee 
WHERE "lName" LIKE 'Smith'

Maintenant, Postgresql reconnaîtra "Smith" comme une valeur à comparer à la colonne "lName", qui est correctement cité.

De plus, il est important de s'assurer que le nom de la colonne dans la clause WHERE correspond au nom réel de la colonne dans la table de la base de données. Dans ce cas, le tableau contient une colonne nommée "lName" avec un "N" majuscule. Par conséquent, il doit être cité dans la requête pour le distinguer des autres noms de colonnes potentiels.

Enfin, déterminez si vous aviez l'intention d'inclure un caractère générique dans la clause LIKE. Dans la plupart des dialectes SQL, utiliser LIKE sans caractère générique (par exemple, « Smith ») équivaut à utiliser =. Si vous vouliez rechercher des correspondances partielles, vous devez inclure un caractère générique, tel que :

SELECT * 
FROM employee 
WHERE "lName" LIKE '%Smith%'

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