Asp.net 使用“in”SQL函数中的值将逗号分隔的值从.NET传递到存储过程
我有一个类似于以下内容的SQL查询:Asp.net 使用“in”SQL函数中的值将逗号分隔的值从.NET传递到存储过程,asp.net,sql-server,vb.net,sql-server-2005,Asp.net,Sql Server,Vb.net,Sql Server 2005,我有一个类似于以下内容的SQL查询: create procedure test ( @param1 nvarchar(max) ) as begin select * from table where column1 in (@param1) end 现在,我需要从我的.net应用程序中传递@param1的值,以便上面的查询能够工作 有人能告诉我如何从我的VB.NET代码中传递与下面类似的值吗 ‘1’、‘2’、‘3’ 我的主要问题是如何从我的.NET应用程序中构造上述示例中的参
create procedure test
(
@param1 nvarchar(max)
)
as
begin
select * from table where column1 in (@param1)
end
现在,我需要从我的.net应用程序中传递@param1的值,以便上面的查询能够工作
有人能告诉我如何从我的VB.NET代码中传递与下面类似的值吗
‘1’、‘2’、‘3’
我的主要问题是如何从我的.NET应用程序中构造上述示例中的参数值?像这样,我将创建一个解析它的
select *
from table
where field in (select field from dbo.myfunction(@param1))
我认为问题不在于你传递的价值观@param1只是一个字符串 您需要在您的程序中解决此问题。select语句将无法识别in子句中的值。一种解决方案是采用逗号分隔的字符串,并将每条记录插入到表变量中 如果您的表变量是table@param_list,则您的过程测试如下所示:
create procedure test ( @param1 nvarchar(max) )
as begin
select * from table where column1 in (Select thefield from @param_list);
end
对于这种类型的东西,我使用这个函数,并按如下方式使用它: 从my table中选择Column1、column2,其中从Fnspit'1,2,3,4,5,6'、'中选择项中的ID
create FUNCTION [dbo].[fnSplit](
@sInputList VARCHAR(8000) -- List of delimited items
, @sDelimiter VARCHAR(8000) = ',' -- delimiter that separates items
)
RETURNS @List TABLE (item VARCHAR(8000))
BEGIN
DECLARE @sItem VARCHAR(8000)
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
BEGIN
SELECT
@sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),
@sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))
IF LEN(@sItem) > 0
INSERT INTO @List SELECT @sItem
END
IF LEN(@sInputList) > 0
INSERT INTO @List SELECT @sInputList -- Put the last item in
RETURN
END
你是个救生员。非常感谢你查看这篇文章