Maison > base de données > tutoriel mysql > Postgres vs SQL Server : pourquoi ma requête « WHERE IN (list) » échoue-t-elle avec une référence de colonne non valide ?

Postgres vs SQL Server : pourquoi ma requête « WHERE IN (list) » échoue-t-elle avec une référence de colonne non valide ?

Mary-Kate Olsen
Libérer: 2025-01-01 02:13:09
original
176 Les gens l'ont consulté

Postgres vs. SQL Server: Why Does My

Postgres : "where in (list)" - Référence de colonne non valide

Dans SQL Server, la requête suivante supprimerait avec succès les lignes du table user_job_titles basée sur une liste d'ID :

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

Cependant, lorsque vous tentez d'exécuter cette requête dans Postgres, une erreur se produit :

ERROR: column "c836d018-1d12-4507-a268-a4d80d6d3f54" does not exist
Copier après la connexion

Cause :

Le problème réside dans l'utilisation de guillemets doubles autour des valeurs d'ID dans la clause IN. Dans Postgres, les guillemets doubles sont réservés comme caractères d'échappement pour les noms de tables et de colonnes. En les utilisant autour des identifiants, Postgres les interprète comme des références à des colonnes inexistantes, ce qui entraîne l'erreur.

Solution :

Pour résoudre ce problème, remplacez le guillemets doubles avec guillemets simples :

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

En utilisant des guillemets simples, les identifiants sont interprétés comme des constantes de chaîne, permettant à la clause IN de fonctionner correctement.

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