一尘不染

SQL SELECT * FROM XXX WHERE数组中的columnName

sql

我正在处理一些SQL代码。

我熟悉语法

SELECT * FROM myTable WHERE myColumn in ('1','2','3');

假设我要在要使用的C#数组中编写一些C#代码('1','2','3')。我怎么做?


阅读 128

收藏
2021-05-23

共1个答案

一尘不染

您可以动态构建SQL字符串。

如果您知道数组中的数据很好(用户未提供),则只需执行一个string.Join。

var sql = string.Format("SELECT * FROM myTable WHERE myColumn in ({0})", string.Join(", ", myArray));

如果您不知道它是经过清理的数据,则应使用带有参数的Command。

var myArray = new string[] { "1", "2", "3" };
//var sql = string.Format("SELECT * FROM myTable WHERE myColumn in ({0})", string.Join(", ", myArray));

var cmd = new System.Data.SqlClient.SqlCommand();
var sql = new System.Text.StringBuilder();
sql.Append("SELECT * FROM myTable WHERE myColumn in (");
for (var i = 0; i < myArray.Length; i++)
{
    cmd.Parameters.Add("@" + i, myArray[i]);
    if (i > 0) sql.Append(", ");
    sql.Append("@" + i);
}
sql.Append(")");
cmd.CommandText = sql.ToString();
2021-05-23