Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 如何使用dbo.fnSplit函数中SQL select语句的结果作为输入_Sql Server 2008 - Fatal编程技术网

Sql server 2008 如何使用dbo.fnSplit函数中SQL select语句的结果作为输入

Sql server 2008 如何使用dbo.fnSplit函数中SQL select语句的结果作为输入,sql-server-2008,Sql Server 2008,我需要使用逗号分隔的字符串,它是表列中的一个值 SQL语句的in子句SQL server 2008 为此,我使用下面的split函数以表格格式生成字符串,并在SQL查询的“in”子句中使用它 ALTER FUNCTION dbo.fnSplit( @sInputList VARCHAR(8000) -- List of delimited items , @sDelimiter VARCHAR(8000) = ',' -- delimiter that separates items ) R

我需要使用逗号分隔的字符串,它是表列中的一个值 SQL语句的in子句SQL server 2008 为此,我使用下面的split函数以表格格式生成字符串,并在SQL查询的“in”子句中使用它

ALTER 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
GO

select * from dbo.fnSplit('aaa,bbb,ccc', ',')
现在我需要使用SQL语句,它在fnSplit函数中返回字符串aaa、bbb、ccc,如下所示

  select * from dbo.fnSplit((SELECT Prefix2Include FROM dbo.vw_PrefixToInclude), ',')
注意:选择Prefix2Include FROM dbo.vwu PrefixToInclude返回aaa、bbb、ccc

但这给了我一些语法错误,如下所示:

Msg 102, Level 15, State 1, Line 4
  Incorrect syntax near '('.
  Msg 102, Level 15, State 1, Line 4
  Incorrect syntax near ',
请在这方面指导我

谢谢,
Soumya

为什么不这样试试呢

declare @Prefix2Include as Varchar(500)

SELECT  @Prefix2Include = Prefix2Include FROM dbo.vw_PrefixToInclude

select * from dbo.fnSplit(@Prefix2Include , ',')
使现代化
为什么不这样试试呢

declare @Prefix2Include as Varchar(500)

SELECT  @Prefix2Include = Prefix2Include FROM dbo.vw_PrefixToInclude

select * from dbo.fnSplit(@Prefix2Include , ',')
使现代化
谢谢你的回答。实际上我有一个大的查询,我需要将它包含在这个查询的一个select语句的一个“IN”子句中。我的要求是使用以下表格项目:select*from Tbl_Emp v其中v.EmpPrefix IN select*from dbo.fnSplitSELECT Prefix2Include from dbo.vw_PrefixToInclude,'谢谢您的回答,我将尝试在存储过程中使用相同的查询谢谢您的回答。实际上,我有一个大查询,我需要将其包含在该查询的一个select语句的'IN'子句中。我的要求是使用以下表格项:select*from Tbl_Emp v where v.EmpPrefix IN select*fromdbo.fnSplitSELECT Prefix2Include FROM dbo.vw_PrefixToInclude,“,”感谢您的回答,我将尝试在存储procedure@MitchWheat他说谢谢你的回答,但他没有接受。haha@MitchWheat他说谢谢你的回答,但他没有接受。哈哈
Select * From @t v 
Where v.EmpPrefix IN 
(select * from dbo.fnSplit(@Prefix2Include, ','))