比较SQL列和数组中的项

本文关键字:数组 SQL 比较 | 更新日期: 2023-09-27 17:52:12

我有一个SQL server表,我想查询行上的项目,其中有一个值等于Array中的一个项目。下面是我的例子:

Column1    Column2    Column3
-------    -------    -------
aaa        100        200
bbb        100        400
aaa        200        78  
ccc        200        200

And my array:

string[] arr = {"ddd", "aaa", "fff", "bbb"}

所以,我想从SQL行中返回匹配数组中的项。我的SQL查询应该返回列n1匹配数组中的一个项目的项目:

Column1    Column2    Column3
-------    -------    -------
aaa        100        200
bbb        100        400
aaa        200        78  
顺便说一下,这些都在c#中。

比较SQL列和数组中的项

您可以使用IN(@PARAM)子句构建SQL查询,并将它们与String.Join连接,如下所示:

using(SqlConnection connection = new SqlConnection(
        connectionString)) {
    using(SqlCommand command = new SqlCommand()) {
            SqlDataReader reader = null;
        try {
            command.Connection = connection;
            command.CommandText = "SELECT * FROM <TABLE> WHERE <FIELD> IN (@PARAM)";
            command.CommandType = CommandType.Text;
            command.Parameters.Add(new SqlParameter(@"@PARAM",
                    String.Join(",", <array>)));
            connection.Open();
            reader = command.ExecuteReader();
            if(reader.HasRows) {
                // logic
            }
        } catch(SqlException) {
            throw;
        }
    }
}

条目必须用"(单引号)括起来。

您可以将这些值作为Table Value Parameter传递给SP,然后将join传递给列n1上的表。

链接:如何从c#中传递TVP

您想要的SQL查询是:

SELECT * FROM Table1 WHERE Column1 IN ('ddd', 'aaa', 'fff', 'bbb')

你可以直接将数组解析为查询。

你的帖子没有提到任何关于LINQ,这将使它更容易。