首页 > 解决方案 > 如何使用 IN() 搜索存在?

问题描述

我正在使用 Npgsql 连接到 Postgres 数据库,我想运行这样的查询:

 SELECT column IN('foo', 'bar') FROM table;

检查列是否在列表中。

我现在有这个 C# 代码:

var list = new string[] { "foo", "bar" };
var cmd = new NpgsqlCommand("SELECT column IN(:list) FROM table", myConnection);
cmd.Parameters.AddWithValue("list", list);

但这不起作用,因为 Npgsql 生成一个ARRAYfrom list,它应该是别的东西,......但是什么?

标签: c#npgsql

解决方案


我使用ANY运算符修复了它,因为它需要一个数组:

var list = new string[] { "foo", "bar" };
var cmd = new NpgsqlCommand("SELECT column = ANY(:list) FROM table", myConnection);
cmd.Parameters.AddWithValue("list", list);

推荐阅读