MSSQL에서 STRING_SPLIT 함수를 사용하면 문자열을 지정된 구분자를 기준으로 분리하여 테이블 형태로 반환할 수 있습니다.
아래 예제와 함께 STRING_SPLIT 함수의 사용법을 자세하게 알려드리겠습니다.
DECLARE @string VARCHAR(100) = 'apple,banana,orange'
SELECT value
FROM STRING_SPLIT(@string, ',')
이 예제에서는 @string 변수에 'apple,banana,orange'라는 문자열이 저장되어 있습니다. STRING_SPLIT 함수를 사용하여 이 문자열을 쉼표(,)를 구분자로하여 분리한 후 결과를 조회합니다.
STRING_SPLIT 함수는 두 개의 인자를 받습니다:
첫 번째 인자(@string): 분리할 문자열입니다.
두 번째 인자(,): 구분자입니다.
STRING_SPLIT 함수의 반환 값은 value라는 열(Column)을 가지는 테이블입니다.
이 열에는 문자열이 분리된 결과가 각 행에 저장됩니다.
위 예제를 실행하면 다음과 같은 결과를 얻을 수 있습니다:
value
------
apple
banana
orange
STRING_SPLIT 함수는 SQL Server 2016부터 도입되었습니다.
이전 버전의 SQL Server에서는 STRING_SPLIT 함수를 직접 사용할 수 없는 경우가 있습니다.
이 경우에는 다른 방법을 사용해야 합니다.
만약 SQL Server 2016 이전 버전을 사용하거나 호환성 수준(compatibility level)이 낮아서 STRING_SPLIT 함수를 사용할 수 없는 경우에는 대체 방법을 사용해야 합니다.
대체 방법 중 하나는 사용자 정의 함수(User-defined Function)를 작성하여 문자열을 분리하는 것입니다.
이를 위해 XML을 활용하는 방법이 일반적으로 사용됩니다.
아래는 XML을 활용한 문자열 분리 예제입니다:
DECLARE @string VARCHAR(100) = 'apple,banana,orange'
SELECT LTRIM(RTRIM(Split.a.value('.', 'VARCHAR(100)'))) AS Value
FROM
(
SELECT CAST('<M>' + REPLACE(@string, ',', '</M><M>') + '</M>' AS XML) AS Data
) AS A
CROSS APPLY Data.nodes('/M') AS Split(a)
이 예제에서는 XML을 사용하여 문자열을 분리합니다.
문자열을 <M> 요소로 감싸고 쉼표(,)를 기준으로 요소를 분리한 후, 각 요소를 다시 조회하여 결과를 얻습니다.
STRING_SPLIT 함수는 간단하고 편리한 방법이지만, 호환성 문제로 인해 사용할 수 없는 경우에는 XML을 활용한 대체 방법을 사용할 수 있습니다.
'SQL > MSSQL' 카테고리의 다른 글
[MSSQL] 열을 행으로 바꾸는 방법 / UNPIVOT, CROSS APLLY (0) | 2023.07.21 |
---|---|
[MSSQL] 행 합치는 법(STRING_AGG, FOR XML PATH, STUFF) (0) | 2023.07.13 |
[MSSQL] FOR XML 사용 방법 (0) | 2023.07.13 |
[MSSQL] @@ROWCOUNT 사용 방법 및 예시 (0) | 2023.07.06 |
[MSSQL] STRING_AGG 함수 사용 방법 및 예시 (0) | 2023.04.03 |
[MSSQL] Coalesce 함수 Null이 아닌 값 반환 사용 방법 (0) | 2023.03.20 |
[MSSQL] INNER, LEFT, RIGHT, FULL JOIN 쿼리 사용 방법 (0) | 2023.03.18 |
[MSSQL] IS NULL 사용 방법 (0) | 2023.03.17 |