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 |