Sql server 2008 如何使用dbo.fnSplit函数中SQL select语句的结果作为输入
我需要使用逗号分隔的字符串,它是表列中的一个值 SQL语句的in子句SQL server 2008 为此,我使用下面的split函数以表格格式生成字符串,并在SQL查询的“in”子句中使用它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
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, ','))