这可能是SELECT * FROM X WHERE id IN (...) with Dapper ORM
的副本我正在努力实现:
connection.execute("delete from table where id in @ids", new { ids = new int[]{1,2}});
但它没有用。我总是得到:错误:42883:运算符不存在:整数=整数[]。
即使我这样做了:
connection.Query<a>("select * from a where a_id in @ids", new { ids = new int[] { 12, 13 } })
我得到了同样的例外。 我正在使用Npgsql访问postgresql数据库。 你能告诉我我做错了吗?
以下是第二个声明在数据库中发生的情况:
这是第二个陈述的一些日志:
运算符不存在:整数=整数[],字符33
没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。
从((array [12,13]):: int4 [])中的a_id中选择*
这是第一个(与上面相同但最后一行不同)
从((array [12,13]):: int4 [])中的a_id删除
答案 0 :(得分:1)
我建议您查看Postgres文档Searching in Arrays。 简而言之,您应该使用运算符&#34; ANY&#34;或者&#34;所有&#34;或者手动检查列中每个数组的值。
此sql是具有IN子句的查询的等效版本:
delete from table where id = any (@ids)