MSSQL 여러 문자 한 번에 바꾸기(치환) TRANSLATE 함수 사용법

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}',
                        '[',
                        '('
                  ),
                  ']',
                  ')'
            ),
            '{',
            '('
      ),
      '}',
      ')'
);


▶ 실행 결과 (동일함)

TRNASLATE 함수와 REPLACE 함수 비교


예제 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


▶ 결과

입력 문자열의 "()."를 " --"로 대체


이 글이 도움이 되셨다면 공유를 부탁 드립니다. 다음 글에서 뵙겠습니다!

관련 이전 게시글

위로 스크롤