TRANSLATE(Transact-SQL)
적용 대상: SQL Server 2017(14.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance
두 번째 인수에 지정된 일부 문자가 세 번째 인수에 지정된 문자의 대상 세트로 변환된 이후 첫 번째 인수로 제공된 문자열을 반환합니다.
구문
TRANSLATE ( inputString, characters, translations )
인수
inputString
검색할 문자열 식입니다. inputString 은 모든 문자 데이터 형식(nvarchar, varchar, nchar, char)일 수 있습니다.
문자
바꿔야 하는 문자가 포함된 문자열 식입니다. 모든 문자 데이터 형식은 characters가 될 수 있습니다.
번역
대체 문자를 포함하는 문자열 식입니다. 번역은 문자와 동일한 데이터 형식 및 길이여야 합니다.
반환 형식
inputString과 데이터 형식이 동일하면서 두 번째 인수의 문자가 세 번째 인수에서 일치하는 문자로 대체되는 문자 식을 반환합니다.
설명
TRANSLATE
는 문자 및 번역 식의 길이가 다른 경우 오류를 반환합니다. TRANSLATE
는 인수 중 NULL이면 NULL을 반환합니다.
함수의 TRANSLATE
동작은 여러 REPLACE 함수를 사용하는 것과 유사합니다. 그러나 TRANSLATE
는 inputString
의 개별 문자를 두 번 이상 바꾸지는 않습니다. characters
매개 변수의 단일 값은 inputString
의 여러 문자를 바꿀 수 있습니다.
이는 이전 중첩 REPLACE
함수 호출로 대체된 경우에도 각 함수 호출이 모든 관련 문자를 대체하므로 여러 REPLACE
함수의 동작과는 다릅니다.
TRANSLATE
는 항상 SC 데이터 정렬을 인식합니다. 보조 데이터 정렬에 대한 자세한 내용은 데이터 정렬 및 유니코드 지원을 참조하세요.
예제
A. 정사각형 및 중괄호를 일반 중괄호로 바꾸기
다음 쿼리는 입력 문자열의 정사각형 및 중괄호를 괄호로 바꿉니다.
SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()');
결과 집합은 다음과 같습니다.
2*(3+4)/(7-2)
REPLACE에 해당하는 호출
다음 SELECT 문에는 REPLACE 함수에 대한 4개의 중첩된 호출 그룹이 있습니다. 이 그룹은 이전 SELECT에서 TRANSLATE 함수를 호출한 것과 같습니다.
SELECT
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
'2*[3+4]/{7-2}',
'[',
'('
),
']',
')'
),
'{',
'('
),
'}',
')'
);
B. GeoJSON 포인트를 WKT로 변환
GeoJSON은 여러 지리 데이터 구조를 인코딩하는 형식입니다. TRANSLATE
함수에서는 개발자가 GeoJSON 포인트를 WKT 형식으로 변환하거나 그 반대로 쉽게 변환할 수 있습니다. 다음 쿼리는 입력 문자열의 대괄호와 중괄호를 괄호로 대체합니다.
SELECT TRANSLATE('[137.4,72.3]' , '[,]', '( )') AS Point,
TRANSLATE('(137.4 72.3)' , '( )', '[,]') AS Coordinates;
결과 집합은 다음과 같습니다.
Point | 좌표 |
---|---|
(137.4 72.3) | [137.4,72.3] |
C. TRANSLATE 함수 사용
SELECT TRANSLATE('abcdef','abc','bcd') AS Translated,
REPLACE(REPLACE(REPLACE('abcdef','a','b'),'b','c'),'c','d') AS Replaced;
결과 집합은 다음과 같습니다.
변역됨 | Replaced |
---|---|
bcddef | ddddef |