dapper sql in-cláusula arroja excepción

dapper in-clause postgresql sql

Pregunta

Esto puede ser un duplicado de SELECT * FROM X WHERE id IN (...) con Dapper ORM

Estoy tratando de lograr:

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

Pero no está funcionando. Siempre obtengo: ERROR: 42883: el operador no existe: entero = entero [].

Incluso si hago esto:

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

Recibo la misma excepción. Estoy accediendo a una base de datos postgresql con Npgsql. ¿Puedes decirme qué estoy haciendo mal?

Esto es lo que sucede en la base de datos para la segunda declaración:

Aquí hay un registro para la segunda declaración:

operador no existe: entero = entero [] en el carácter 33

Ningún operador coincide con el nombre y el tipo de argumento. Es posible que necesite agregar moldes de tipo explícitos.

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

Y esto es para el primero (igual que el anterior, pero la última línea es diferente)

eliminar de a donde a_id en ((matriz [12,13]) :: int4 [])

Respuesta popular

Le aconsejo que eche un vistazo a los documentos de Postgres que buscan en matrices . En resumen, debe usar el operador "ANY" o "ALL" o verificar manualmente la columna para cada valor de la matriz.

Este sql es la versión equivalente de una consulta con la cláusula IN:

delete from table where id = any (@ids)


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué