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 를 중첩해서 사용해야 한다면( 바꿀 문자가 여러 개 일 경우 ) TRANSLATE 를 사용하면 훨씬 편하다
TRANSLATE 는 MSSQL 2017 버전부터 사용 가능하다.
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 공백제거