C# 使用SQL JQUERY C JavaScript创建WHERE IN子句

C# 使用SQL JQUERY C JavaScript创建WHERE IN子句,c#,javascript,jquery,sql,winforms,C#,Javascript,Jquery,Sql,Winforms,我正在编写一个大型SQL语句,其中包含一个大型WHERE子句: 有没有一种方法可以包装我的值列表,或者通过编程方式创建WHERE ID IN子句 我的价值清单如下: C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 您将需要动态SQL DECLARE @query varchar(1000) DECLARE @colList varchar(500) SELECT @colList=COALESCE(@colList+',','') + columnName FROM y

我正在编写一个大型SQL语句,其中包含一个大型WHERE子句:

有没有一种方法可以包装我的值列表,或者通过编程方式创建WHERE ID IN子句

我的价值清单如下:

C1
C2
C3
C4
C5
C6
C7
C8
C9
C10
C11

您将需要动态SQL

DECLARE @query varchar(1000)
DECLARE @colList varchar(500)

SELECT @colList=COALESCE(@colList+',','') + columnName
FROM yourTable

SET @query = 'SELECT id FROM otherTable WHERE id IN ('+ @colList +')'

EXEC(@query)

我们通常将所有ID作为串联varchar传递,如下所示:

declare @ids varchar(max) = 'C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11'
然后,我们有一个函数将varchar拆分为一个表,查询的编写方式如下:

SELECT ID FROM TABLE
WHERE ID IN (select item from [dbo].[func_Split](@ids, ','))
我们通常从代码中将@ids作为参数传递,因此您可以在那里创建字符串。或者在SQL中创建它。 请参阅函数

也可以在mhasan的示例中使用,以避免动态SQL:

DECLARE @colList varchar(max)

SELECT @colList=COALESCE(@colList+',','') + columnName
FROM yourTable

SELECT ID FROM TABLE
WHERE ID IN (select item from [dbo].[func_Split](@colList, ','))

如果希望在in动态sql子句中将值列表声明为“alpha”、“beta”和“gamma”,请使用以下内容

函数retColarr{ 返回arr.length?'+arr.join','+':; }

然后将值存储在变量中 var myArray=新阵列α、β、γ; var sortedVal=retColmyArray;。 var sqlString=从ID位于+sortedVal+中的表中选择ID


希望这有帮助。

表的列中存储了值列表吗?WHERE ID in子句将用什么语言实现?SQL?JQUERY?CJavaScript?全部?我只想使用编程方法创建SQL语法。变量@colList包含表列的逗号分隔值。
DECLARE @colList varchar(max)

SELECT @colList=COALESCE(@colList+',','') + columnName
FROM yourTable

SELECT ID FROM TABLE
WHERE ID IN (select item from [dbo].[func_Split](@colList, ','))