Freigeben über


TRANSLATE (Transact-SQL)

Gilt für: SQL Server 2017 (14.x) und höher Azure SQL-Datenbank Azure 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, der im dritten Argument angegeben wird, übersetzt wurden.

Syntax

TRANSLATE ( inputString, characters, translations )

Argumente

inputString

Der aus einer Zeichenfolge bestehende Ausdruck, der durchsucht werden soll. inputString kann ein beliebiger Zeichendatentyp sein (nvarchar, varchar, nchar, nchar, char).

characters

Ein aus einer Zeichenfolge bestehender Ausdruck, der die zu ersetzenden Zeichen enthält. Für characters sind beliebige Zeichendatentypen möglich.

translations

Ist ein aus einer Zeichenfolge bestehender Ausdruck, 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 wurden.

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. Weitere Informationen zu zusätzlichen Sortierungen finden Sie unter Sortierung und Unicode-Unterstützung.

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 sehen Sie das Ergebnis.

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

Entsprechende Aufrufe an REPLACE

Die folgende SELECT-Anweisung enthält 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 die Codierung verschiedener geografischer 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 sehen Sie das Ergebnis.

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;

Hier sehen Sie das Ergebnis.

Übersetzt Ersetzt
bcddef ddddef

Weitere Informationen