dapper sql in-clause抛出异常

时间:2014-03-22 03:26:30

标签: sql postgresql dapper in-clause

这可能是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删除

1 个答案:

答案 0 :(得分:1)

我建议您查看Postgres文档Searching in Arrays。 简而言之,您应该使用运算符&#34; ANY&#34;或者&#34;所有&#34;或者手动检查列中每个数组的值。

此sql是具有IN子句的查询的等效版本:

delete from table where id = any (@ids)