在 sql WHERE {params} 中有很多参数可以吗?

Is it ok to have a lot of params in sql WHERE {params}?

所以,我有一个 SELECT 和我的 WHERE,其中 select 有时会增加很多,有时不会 x = 1 OR x = 2,我想甚至可能有其中 100 个。

这样做可以吗?或者它会破坏性能?

这是更形象的例子

string sqlString = String.Format("SELECT * FROM categories WHERE {0}",
                                  stringWithAlotOfORsStatment)

根据情况和用户selected

生成stringWithAlotOfORsStatment

不确定这个问题是否有意义:L

您可以用单个 X IN (1,2,3) 替换多个 X=1 OR X=2... 语句,例如:

SELECT * From SomeTable where X in (1,2,3)

我建议使用 LINQ 和 EF 或 Dapper.NET 创建安全查询,而不是使用字符串格式来传递值列表。

在 LINQ to EF 数组中或 List.Contains 映射到 IN 子句:

var ids=new []{1,2};
var results = from r in ctx.SomeTable
              where ids.Contains(r.x)
              select r;

在 Dapper 中,您可以将数组作为参数传递:

string sql = "SELECT * FROM SomeTable WHERE x IN @ids"
var results = conn.Query(sql, new { ids = new[] { 1, 2, 3});