C# tsql“IN”参数的C语法
在TSQL中,我可以编写:C# tsql“IN”参数的C语法,c#,sql,parameter-passing,C#,Sql,Parameter Passing,在TSQL中,我可以编写: Select * from mytablename M where M.field in (1, 5, 8, 56) 如果我想在参数化c中做同样的事情,语法是什么?SQL Server 2008有一个称为表值参数的功能。您可以在SQL Server中创建一个特殊类型,然后可以将一个DataTable作为参数传递,其中包含所需的所有值 您可以这样使用它: 在DB上执行以下操作:将类型dbo.IntArray创建为表值INT notnull 您的IN查询必须更改为类似
Select * from mytablename M where M.field in (1, 5, 8, 56)
如果我想在参数化c中做同样的事情,语法是什么?SQL Server 2008有一个称为表值参数的功能。您可以在SQL Server中创建一个特殊类型,然后可以将一个DataTable作为参数传递,其中包含所需的所有值 您可以这样使用它: 在DB上执行以下操作:将类型dbo.IntArray创建为表值INT notnull 您的IN查询必须更改为类似于:CustomerID IN SELECT Value FROM@1 从技术上讲,您可以更改您的查询,甚至在
INNER JOIN @1 Par ON CustomerID = Par.Value
这样做的好处是,您可以创建多列DataTable和表值参数,并同时搜索多个条件
请注意,我的代码过长,因为它是一个基于Microsoft AdventureWorks db的工作示例你的意思是在@p1、@p2、@p3、@p4中吗?只是我的大脑溢出了。@DeveloperM正常情况下,当一个IN查询中有数百个参数时,这表明您从数据库中获取了一些数据来生成查询参数,用户很少在UI中键入数百个参数。如果数据已经在数据库中,请尝试使用联接或类似方法,而不是获取数据并再次将其传递回数据库。但是是的,它肯定也适用于数百个参数。@JoachimIsaksson可以传递的参数数量有一个上限。我不记得了,但它不是无限的。至少在SQLServer2008上。
INNER JOIN @1 Par ON CustomerID = Par.Value