TRANSLATE(Transact-SQL)

적용 대상: SQL Server 2017(14.x) 이상 Azure SQL DatabaseAzure SQL Managed Instance

두 번째 인수에 지정된 일부 문자가 세 번째 인수에 지정된 문자의 대상 세트로 변환된 이후 첫 번째 인수로 제공된 문자열을 반환합니다.

Syntax

TRANSLATE ( inputString, characters, translations )

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

inputString

검색할 문자열 입니다. inputString 은 모든 문자 데이터 형식(nvarchar, varchar, nchar, char)일 수 있습니다.

문자

바꿔야 하는 문자가 포함된 문자열 입니다. 모든 문자 데이터 형식은 characters가 될 수 있습니다.

번역

대체 문자를 포함하는 문자열 입니다. 번역은 문자와 동일한 데이터 형식 및 길이여야 합니다.

반환 형식

inputString과 데이터 형식이 동일하면서 두 번째 인수의 문자가 세 번째 인수에서 일치하는 문자로 대체되는 문자 식을 반환합니다.

설명

TRANSLATE는 문자번역 식의 길이가 다른 경우 오류를 반환합니다. TRANSLATE 는 인수 중 NULL이면 NULL을 반환합니다.

함수의 TRANSLATE 동작은 여러 REPLACE 함수를 사용하는 것과 유사합니다. 그러나 TRANSLATEinputString의 개별 문자를 두 번 이상 바꾸지는 않습니다. 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

참고 항목