带有 Postgres 的 Dapper WHERE IN 字符串语句

Jac*_*ack 4 c# postgresql where-in dapper

我见过Dapper WHERE IN 语句与 ODBC

但我不确定 Dapper 是否支持 Postgres 的 WHERE IN ("String1", "String2") 语法。这是支持的吗?我试图挖掘代码,但我现在真的没有时间。到目前为止,我只看到了整数的例子。

例子:

_connection.QueryAsync<Lookup>("select * from lookup where lower(discriminator) in @types", new { types = new[] {"Prefix", "Suffix"} });
Run Code Online (Sandbox Code Playgroud)

结果:PostgresException {"42601: 语法错误位于或接近 \"$1\""}

陈述:

{select * from lookup where lower(discriminator) in $1}
Run Code Online (Sandbox Code Playgroud)

Ali*_*ami 10

如果我没有弄错INPostgres 中的运算符将不支持数组作为参数。而不是像下面这样的IN尝试ANY运算符:

var query = "SELECT * FROM lookup WHERE LOWER(discriminator) = ANY(@types)";

_connection.QueryAsync<Lookup>(query, new { types = new[] {"Prefix", "Suffix"} });
Run Code Online (Sandbox Code Playgroud)

  • 先生,您是圣人。我的 .NET / SQL Server 背景正在显示。这有效,谢谢! (3认同)
  • 谢谢你,我一直在与查询作斗争,试图找出有效的 sql 不起作用的原因。 (2认同)