IT/SQL

MSSQL REPLACE, TRANSLATE 문자 바꾸기

아이앤휘 2024. 4. 25. 23:56

MSSQL 에서 문자 바꾸기는 기본적으로 REPLACE 가 있다. 만약 REPLACE 를 중첩해서 여러번 사용해야 한다면 TRANSLATE 를 사용하면 된다. ( 2017 버전부터 )

 

REPLACE 사용법

구문 

REPLACE ( string_expression , string_pattern , string_replacement )

 

예제

SELECT REPLACE('ABC', 'B', 'X')

 

결과

REPLACE 쿼리 결과

만약 REPLACE 를 중첩해서 사용해야 한다면( 바꿀 문자가 여러 개 일 경우 ) TRANSLATE 를 사용하면 훨씬 편하다

TRANSLATE 는 MSSQL 2017 버전부터 사용 가능하다.

 

REPLACE MS 문서링크

 

TRANSLATE 사용법

구문 

TRANSLATE ( inputString, characters, translations )

 

예제

만약 '[ABC],[DEF]' 와 같은 문자열이 있는데 중괄호를 괄호로 바꾸고 싶다면 REPLACE 를 사용하면 중첩으로 사용해야 한다.

DECLARE @A VARCHAR(20)
SET @A = '[ABC],[DEF]'
SELECT @A AS 원본
	, REPLACE(REPLACE(@A, '[', '('), ']', ')') AS [REPLACE 함수]
	, TRANSLATE(@A, '[]', '()') AS [TRANSLATE 함수]

 

결과

각각의 함수 실행 결과

REPLACE 를 중첩으로 사용한 결과와 TRANSLATE 를 사용한 결과는 동일하다.

 

다만 제약은 있다. 두번째 파라미터의 문자 갯수와 세번째 파라미터의 문자 갯수가 같아야 한다.

그래서 만약 [ ] 이 두 문자를 모두 / 로 바꾸고 싶다면

DECLARE @A VARCHAR(20)
SET @A = '[ABC],[DEF]'
SELECT TRANSLATE(@A, '[]', '//') AS [TRANSLATE 함수]

 

이런식으로 작성해줘야 한다.

 

문자를 대체하는 것이 아니라 제거하고 싶다면 TRIM 을 사용하면 된다. ( 2022 버전부터 사용 가능 )

2024.04.21 - [IT/SQL] - MSSQL TRIM 공백제거

 

 

TRANSLATE MS 문서