반응형
MSSQL에서 문자열 '123'을 각각의 문자 뒤에 세미콜론을 추가해 '1;2;3;' 형식으로 변환하려면 다음과 같이 사용할 수 있다.
- FOR XML PATH를 이용한 방법:
DECLARE @input VARCHAR(10) = '123';
DECLARE @output VARCHAR(MAX);
SET @output = STUFF((
SELECT ';' + SUBSTRING(@input, Number, 1)
FROM master..spt_values
WHERE Type = 'P'
AND Number BETWEEN 1 AND LEN(@input)
FOR XML PATH('')), 1, 1, '') + ';';
SELECT @output AS Result;
이 쿼리의 결과는 '1;2;3;'가 된다.
설명:
- master..spt_values는 SQL Server의 시스템 테이블로 숫자 시퀀스를 생성하는 데 사용할 수 있다.
- FOR XML PATH('')는 행을 하나의 문자열로 결합하는 역할을 한다.
- STUFF() 함수는 결과 문자열에서 처음의 불필요한 세미콜론을 제거하고 마지막에 ;를 추가하는 데 사용된다.
이 방법을 사용하면 간단하게 문자열을 원하는 형식으로 변환할 수 있다.
다른 방법으로 문자열 '123'을 '1;2;3;' 형태로 변환하는 방법은 재귀적인 CTE(Common Table Expression)와 STRING_AGG 함수를 사용하는 방법이 있다. 다음은 이를 활용한 예시이다.
WITH cte AS (
SELECT 1 AS Position, SUBSTRING('123', 1, 1) AS CharacterValue
UNION ALL
SELECT Position + 1, SUBSTRING('123', Position + 1, 1)
FROM cte
WHERE Position < LEN('123')
)
SELECT STRING_AGG(CharacterValue, ';') + ';' AS Result
FROM cte;
이 쿼리의 결과는 '1;2;3;'가 된다.
설명:
- WITH cte AS (...)는 CTE를 정의한다.
- CTE는 재귀적으로 실행되어 문자열 '123'의 각 문자와 그 위치를 추출한다.
- STRING_AGG(CharacterValue, ';')는 CTE의 각 문자 값을 세미콜론으로 결합하여 최종 결과 문자열을 생성한다.
- 마지막으로 + ';'를 사용하여 문자열 끝에 세미콜론을 추가한다.
이 방법을 사용하면 보다 복잡한 문자열 처리에서도 쉽게 원하는 결과를 얻을 수 있다.
반응형
댓글