TRANSLATE (Transact-SQL)

Gilt für:yesSQL Server 2017 (14.x) und höher YesAzure SQL-Datenbank YesAzure SQL Managed Instance

Gibt die Zeichenfolge zurück, die als erstes Argument bereitgestellt wurde, nachdem einige durch das zweite Argument angegebene Zeichen in einen Zielzeichensatz übersetzt wurden, der im dritten Argument angegeben wird.

Syntax

TRANSLATE ( inputString, characters, translations)

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

inputString ist der Zeichenfolgenausdruck, der gesucht werden soll. inputString kann ein beliebiger Zeichendatentyp sein (nvarchar, varchar, nchar, nchar, char).

characters ist ein aus einer Zeichenfolge bestehender Ausdruck, der zu ersetzende Zeichen enthält. Für characters sind beliebige Zeichendatentypen möglich.

translations ist ein aus einer Zeichenfolge bestehenderAusdruck, der die Ersetzungszeichen enthält. translations muss denselben Datentyp und dieselbe Länge wie characters haben.

Rückgabetypen

Gibt einen Zeichenausdruck des gleichen Datentyps wie inputString zurück, bei dem die Zeichen des zweiten Arguments durch die entsprechenden Zeichen des dritten Arguments ersetzt werden.

Hinweise

TRANSLATE gibt einen Fehler zurück, wenn sich die Länge von characters und translations unterscheidet. TRANSLATE gibt NULL zurück, wenn eines der Argumente NULL ist.

Das Verhalten der TRANSLATE-Funktion ist ähnlich dem Verwenden mehrerer REPLACE-Funktionen. TRANSLATE ersetzt einzelne Zeichen in inputString jedoch nur einmal. Ein einzelner Wert im characters-Parameter kann mehrere Zeichen in inputString ersetzen.

Damit unterscheidet sich dieses Verhalten vom Verhalten mehrerer REPLACE-Funktionen, da dabei jeder Funktionsaufruf alle relevanten Zeichen ersetzen würde, selbst wenn sie bereits durch einen vorherigen geschachtelten REPLACE-Funktionsaufruf ersetzt wurden.

Bei TRANSLATE werden SC-Sortierungen immer beachtet.

Beispiele

A. Ersetzen von eckigen und geschweiften Klammern durch reguläre Klammern

Die folgende Abfrage ersetzt eckige und geschweifte Klammern in der Eingabezeichenfolge durch Klammern:

SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()');

Hier ist das Resultset.

2*(3+4)/(7-2)

Entsprechende Aufrufe an REPLACE

In der folgenden SELECT-Anweisung gibt es eine Gruppe von vier geschachtelten Aufrufen der REPLACE-Funktion. Diese Gruppe entspricht dem einen Aufruf der Funktion TRANSLATE in der vorangehenden SELECT-Anweisung:

SELECT
REPLACE
(
      REPLACE
      (
            REPLACE
            (
                  REPLACE
                  (
                        '2*[3+4]/{7-2}',
                        '[',
                        '('
                  ),
                  ']',
                  ')'
            ),
            '{',
            '('
      ),
      '}',
      ')'
);

B. Konvertieren von GeoJSON-Punkten in WKT

GeoJSON ist ein Format für das Codieren von vielen verschiedenen geografischen Datenstrukturen. Mit der TRANSLATE-Funktion können Entwickler GeoJSON-Punkte einfach in das WKT-Format (und umgekehrt) konvertieren. Die folgende Abfrage ersetzt eckige und geschweifte Klammern in der Eingabe durch reguläre Klammern:

SELECT TRANSLATE('[137.4,72.3]' , '[,]', '( )') AS Point,
    TRANSLATE('(137.4 72.3)' , '( )', '[,]') AS Coordinates;

Hier ist das Resultset.

Point Koordinaten
(137.4 72.3) [137,4; 72,3]

C. Verwenden der TRANSLATE-Funktion

SELECT TRANSLATE('abcdef','abc','bcd') AS Translated,
       REPLACE(REPLACE(REPLACE('abcdef','a','b'),'b','c'),'c','d') AS Replaced;

Die Ergebnisse sind:

Übersetzt Ersetzt
bcddef ddddef

Weitere Informationen