Maison >base de données >tutoriel mysql >Pourquoi ma clause PostgreSQL `WHERE IN` provoque-t-elle une erreur « la colonne n'existe pas » ?

Pourquoi ma clause PostgreSQL `WHERE IN` provoque-t-elle une erreur « la colonne n'existe pas » ?

DDD
DDDoriginal
2024-12-22 03:30:11485parcourir

Why Does My PostgreSQL `WHERE IN` Clause Cause a

PostgreSQL : "la colonne n'existe pas" Erreur dans la requête WHERE IN (liste)

Lors de la tentative de suppression de lignes de la table user_job_titles dans PostgreSQL à l'aide d'un WHERE IN ( list), les utilisateurs peuvent rencontrer l'erreur suivante :

ERROR:  column "c836d018-1d12-4507-a268-a4d80d6d3f54" does not exist
LINE 2: "c836d018-1d12-4507-a268-a4d80d6d3f54"

Cela se produit lors de la tentative d'utilisation guillemets doubles ("") dans la clause WHERE IN, comme démontré dans la requête suivante :

DELETE FROM user_job_titles WHERE id IN (
"c836d018-1d12-4507-a268-a4d80d6d3f54",
"d0961a90-7d31-4c4c-9c1b-671115e3d833",
"62dda420-6e62-4017-b41d-205c0aa82ead"
)

La solution à cette erreur consiste à utiliser des guillemets simples (') autour des constantes de chaîne dans la clause WHERE IN. Les guillemets doubles sont utilisés comme caractères d'échappement pour les noms de tables et de colonnes dans PostgreSQL, ils ne peuvent donc pas être utilisés pour encadrer des littéraux de chaîne.

Par conséquent, la requête correcte doit être :

DELETE FROM user_job_titles
WHERE id IN ('c836d018-1d12-4507-a268-a4d80d6d3f54',
             'd0961a90-7d31-4c4c-9c1b-671115e3d833',
             '62dda420-6e62-4017-b41d-205c0aa82ead'
            );

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