dapper sql in-clause lève une exception

dapper in-clause postgresql sql

Question

Cela peut être une copie de SELECT * FROM X WHERE id IN (...) avec Dapper ORM

J'essaie de réaliser:

connection.execute("delete from table where id in @ids", new { ids = new int[]{1,2}});

Mais ça ne marche pas. J'obtiens toujours: ERREUR: 42883: l'opérateur n'existe pas: entier = entier [].

Même si je fais ceci:

connection.Query<a>("select * from a where a_id in @ids", new { ids = new int[] { 12, 13 } })

Je reçois la même exception. J'accède à une base de données postgresql avec Npgsql. Pouvez-vous me dire ce que je fais mal?

Voici ce qui se passe à la base de données pour la deuxième déclaration:

Voici un journal pour la deuxième déclaration:

l'opérateur n'existe pas: entier = entier [] au caractère 33

Aucun opérateur ne correspond au nom et au type d'argument donnés. Vous devrez peut-être ajouter des transtypages de type explicites.

select * from a où a_id in ((array [12,13]) :: int4 [])

Et c'est pour le premier (comme ci-dessus mais la dernière ligne est différente)

supprimer d'un où a_id in ((array [12,13]) :: int4 [])

Réponse populaire

Je vous conseille de regarder les documents de recherche PostgreSQL dans les tableaux . En bref, vous devez utiliser l'opérateur "ANY" ou "ALL" ou vérifier manuellement la colonne pour chaque valeur du tableau.

Ce sql est la version équivalente d'une requête avec la clause IN:

delete from table where id = any (@ids)


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi