比较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#中。
您可以使用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
,这将使它更容易。