CREATE FUNCTION [dbo].[fn_Split]
(
@pSource NVARCHAR(MAX),
@pSeparator VARCHAR(1)
)
RETURNS @TAB_RETURN TABLE
(
ItemIndex INT,
ItemValue NVARCHAR(1000)
)
AS
BEGIN
DECLARE @buffer VARCHAR(MAX);
DECLARE @item NVARCHAR(MAX);
DECLARE @tmp INT;
DECLARE @index INT;
SET @index = 1;
WHILE LEN(@pSource) > 0
BEGIN
SET @tmp = CHARINDEX(@pSeparator, @pSource);
IF @tmp > 0
BEGIN
SET @item = SUBSTRING(@pSource, 1, @tmp - 1);
SET @pSource = RIGHT(@pSource, LEN(@pSource) - @tmp);
INSERT INTO @TAB_RETURN VALUES(@index, @item);
SET @index = @index + 1;
END ELSE
BEGIN
INSERT INTO @TAB_RETURN VALUES(@index, @pSource);
BREAK;
END;
END;
RETURN
END
예)
SELECT ItemIndex, ItemValue FROM dbo.fn_split('가,나,다,라,마,바,사',',')
result
ItemIndex | ItemValue
1 가
2 나
3 다
4 라
5 마
6 바
7 사
'DB > mssql' 카테고리의 다른 글
[function] 문자열에서 숫자만 뽑아내기 (0) | 2017.02.24 |
---|---|
[function] 숫자에 억,만 단위 붙이기 (0) | 2017.02.24 |
[mssql] paging limit offset (0) | 2017.02.07 |
DATABASE Naming Rule (0) | 2017.01.17 |
(String Concatenation) (Transact-SQL) 예외 케이스 (0) | 2016.12.17 |