본문 바로가기
IT/DB

[mssql] 특정문자로 문자열 구분하는 함수

by 불멸남생 2023. 2. 10.

/*
사용예 : 
  SELECT * from dbo.[fnStrComma](',,a,a,a,b,cd,e', ',')
  SELECT * from dbo.[fnStrComma]('특정 문자로 구분된 문자열 값을 테이블로 변환하여 반환한다', ' ')
 */
CREATE FUNCTION [dbo].[fnStrComma] 
(
@src VARCHAR(MAX)
, @delimeter CHAR(1)
)
RETURNS 
@TABLE TABLE 
(
seq   INT IDENTITY(1,1)
, item VARCHAR(MAX)
)
AS
BEGIN
DECLARE @pos1 INT
, @pos2 INT
, @item VARCHAR(MAX)

IF @delimeter IS NULL
SET @delimeter = ','

IF @src <> ''
BEGIN
SET @pos1 = 1
SET @pos2 = CHARINDEX(@delimeter, @src, @pos1)

WHILE @pos2 > 0
BEGIN
SET @item  = SUBSTRING(@src, @pos1, @pos2 - @pos1)

INSERT INTO @TABLE ( item ) VALUES ( @item )

SET @pos1 = @pos2 + 1
SET @pos2 = CHARINDEX(@delimeter, @src, @pos1)
END -- End While

-- 마지막 항목 추가
SET @item  = SUBSTRING(@src, @pos1, LEN(@src) - @pos1 + 1)
INSERT INTO @TABLE ( item ) VALUES ( @item )
END

RETURN 
END

 

반응형

'IT > DB' 카테고리의 다른 글

FullText Indexing 사용하기 샘플  (0) 2023.02.13
MSSQL 백업 - UNC 를 이용한 네트워크 스토리지  (0) 2023.02.13
[mssql] DB 메일 발송  (0) 2023.02.10
[오라클] 힌트정리  (0) 2023.02.10
[mssql] 로그 파일 축소 방법  (0) 2023.02.10