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 ü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 |