TRANSLATE(Transact-SQL)

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

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

구문

TRANSLATE ( inputString, characters, translations )

참고

SQL Server 2014 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.

인수

inputString

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

문자

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

번역

대체 문자를 포함하는 문자열 입니다. translationscharacters와 데이터 종류 및 길이가 같아야 합니다.

반환 형식

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

설명

characterstranslations 식이 다른 경우 TRANSLATE는 오류를 반환합니다. 인수 중에 NULL이 있는 경우 TRANSLATE는 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;

결과 집합은 다음과 같습니다.

변역됨 대체됨
bcddef ddddef

참고 항목