我有一个SQL服务器表,我想查询行上的项目,这些行的值等于Array中的项目。这是我的例子:
Column1 Column2 Column3
------- ------- -------
aaa 100 200
bbb 100 400
aaa 200 78
ccc 200 200
我的阵列:
string[] arr = {"ddd", "aaa", "fff", "bbb"}
所以,我想从匹配数组中的项的SQL行返回。我的SQL查询应返回column1与数组中的项匹配的项:
Column1 Column2 Column3
------- ------- -------
aaa 100 200
bbb 100 400
aaa 200 78
这一切都在C#中。帮助将是欣赏。
答案 0 :(得分:1)
您可以使用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;
}
}
}
物品必须附在&#39; &#39; (单引号)。
答案 1 :(得分:0)
您想要的SQL查询是
SELECT * FROM Table1 WHERE Column1 IN(&#39; ddd&#39;,&#39; aaa&#39;,&#39; fff&#39;,&#39; bbb&#39;)
您可以直接将数组解析为查询。你的帖子没有提到LINQ的任何内容,这会让它更容易。
答案 2 :(得分:0)
您可以将这些值作为Table Value Parameter
传递到SP
,然后将join
传递给您在Column1上的表格。