로 사용 coul xml Data Type Methods
를 보라.
기본적으로 구분 기호 (귀하의 경우 ',
')를 사용하여 문자열 (귀하의 경우 @MyParameter
)을 분할하는 기능을 사용합니다. 여기
당신이 함수를 호출하는 방법입니다
declare @myParameter varchar(50)
SET @myParameter = 'Main Stream,Premium'
--this table will hold delimited values
DECLARE @ParsedTable TABLE
(
[id] [int] NOT NULL,
[content] [nvarchar](50) NULL
)
--Parsing @myParameter
INSERT INTO @ParsedTable
SELECT * from [dbo].[SplitString](@myParameter, ',')
--SELECT * FROM @ParsedTable --This will show you the values...
--run the query
select * FROM sales
where myCategory IN (SELECT content from @ParsedTable)
을 그리고 여기 분할 기능을 만들기위한 코드입니다 :
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SplitString]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[SplitString]
go
/****** Object: UserDefinedFunction [dbo].[SplitString] Script Date: 11/04/2013 19:04:05 ******/
SET ANSI_NULLS ON
go
SET QUOTED_IDENTIFIER ON
go
CREATE FUNCTION [dbo].[SplitString]
(
-- Add the parameters for the function here
@StringToDelimit nvarchar(500),
@deliminator nvarchar(2)
)
RETURNS
@ReturnTable TABLE
(
-- Add the column definitions for the TABLE variable here
[id] [int] IDENTITY(1,1) NOT NULL,
[content] [nvarchar](50) NULL
)
AS
BEGIN
Declare @delimitorIdx int
Declare @content varchar(50)
--initialize spaces
Select @delimitorIdx = charindex(@deliminator,@StringToDelimit,0)
While @delimitorIdx > 0
Begin
Select @content = substring(@StringToDelimit,0,charindex(@deliminator,@StringToDelimit,0))
Insert Into @ReturnTable(content)
Select @content
Select @StringToDelimit = substring(@StringToDelimit,charindex(@deliminator,@StringToDelimit,0)+ 1,len(@StringToDelimit) - charindex(' ',@StringToDelimit,0))
Select @delimitorIdx = charindex(@deliminator,@StringToDelimit,0)
end
If len(@StringToDelimit) > 0
Insert Into @ReturnTable
Select @StringToDelimit
RETURN
END
go
을이 문제와 다른 솔루션에 대한 자세한 설명은이 [SQL 서버 2005 배열 (HTTP를에 ERLAND Sommerskogs 링크를 체크 아웃 : // WWW. sommarskog.se/arrays-in-sql-2005.html#CSV) –