MSSQL 여러 문자 한 번에 바꾸기(치환) TRANSLATE 함수 사용법
MS SQL에서 문자열 중에서 특정 문자를 바꾸어(치환)야 할 때가 있는데요. 주로 REPLACE 함수를 사용합니다. REPLACE 함수는 하나의 문자열을 원하는 문자열로 치환할 때 주로 사용하는데 여러 문자를 한 번에 치환이 필요할 때가 있는데 그럴 경우에 TRANSLATE 함수를 사용하시면 됩니다. 그리고 SQL Server 2017 이후 버전부터 추가된 함수입니다. 그럼 TRANSLATE 함수를 사용하여 여러 문자를 한 번에 치환하는 방법에 대해서 알아보죠.
◎ 포스트 기준 – Microsoft SQL Server 2019, SSMS 18.11
1. TRANSLATE 구문 (Microsoft 기술 문서)
TRANSLATE (검색할 문자열, 바꿔야 하는 문자가 포함된 문자열, 교체 문자가 포함된 문자열)
▶ TRANSLATE 함수의 동작은 REPLACE 함수를 여러 개 사용할 때와 유사합니다.
▶ TRANSLATE 기본 제공 함수의 두 번째 및 세 번째 인수에 같은 수의 문자가 포함되어 있어야 합니다.
2. TRANSLATE 함수 사용 예제
예제 1) 입력 문자열의 대괄호와 중괄호를 괄호로 대체 (Microsoft 기술 문서)
▶ 코드 : TRNASLATE 함수와 REPLACE 함수 비교
-- TRANSLATE 함수
SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()');
-- REPLACE 함수
SELECT
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
'2*[3+4]/{7-2}',
'[',
'('
),
']',
')'
),
'{',
'('
),
'}',
')'
);
▶ 실행 결과 (동일함)
예제 2) 입력 문자열의 “).”를 “–“로 대체
▶ 코드
WITH TEMP AS (
SELECT '02-1111-2222' AS HAN_NO UNION ALL
SELECT '02)1111.2222' UNION ALL
SELECT '02)1111-2222' UNION ALL
SELECT '031.1111.2222' UNION ALL
SELECT '031)1111-2222'
)
SELECT HAN_NO, TRANSLATE(HAN_NO, ').', '--') AS RESULT
FROM TEMP
▶ 결과
예제 3) 입력 문자열의 “().”를 ” –“로 대체
▶ 코드
WITH TEMP AS (
SELECT '02-1111-2222' AS HAN_NO UNION ALL
SELECT '(02)1111.2222' UNION ALL
SELECT '02)1111-2222' UNION ALL
SELECT '(031)1111.2222' UNION ALL
SELECT '031)1111-2222'
)
SELECT HAN_NO, LTRIM(TRANSLATE(HAN_NO, '().', ' --')) AS RESULT
FROM TEMP
▶ 결과
이 글이 도움이 되셨다면 공유를 부탁 드립니다. 다음 글에서 뵙겠습니다!