TRANSLATE (Transact-SQL)
S’applique à : SQL Server 2017 (14.x) et versions ultérieures Azure SQL Database Azure SQL Managed Instance
Retourne la chaîne fournie comme premier argument une fois que des caractères spécifiés dans le deuxième argument sont traduits en un jeu de caractères de destination spécifié dans le troisième argument.
Syntaxe
TRANSLATE ( inputString, characters, translations )
Arguments
inputString
L’expression de chaîne à rechercher. inputString peut être n’importe quel type de données caractère (nvarchar, varchar, nchar, char).
caractères
Une expression de chaîne contenant des caractères à remplacer. characters peut être n’importe quel type de données caractère.
translations
Une expression de chaîne contenant les caractères de remplacement. translations doit être du même type de données et de même longueur que characters.
Types de retour
Retourne une expression de caractères du même type de données que inputString, où les caractères du deuxième argument sont remplacés par les caractères correspondants du troisième argument.
Remarques
TRANSLATE
retourne une erreur si les expressions characters et translations ont des longueurs différentes. TRANSLATE
retourne NULL si un des arguments est NULL.
Le comportement de la fonction TRANSLATE
est similaire à l’utilisation de plusieurs fonctions REPLACE. TRANSLATE
ne remplace cependant pas un caractère individuel dans inputString
plusieurs fois. Une valeur unique dans le paramètre characters
peut remplacer plusieurs caractères dans inputString
.
Cela est différent du comportement de plusieurs fonctions REPLACE
, car chaque appel de fonction remplace tous les caractères pertinents, même s’ils ont été remplacés par un appel de fonction REPLACE
imbriqué précédent.
TRANSLATE
est toujours conscient du classement SC. Pour plus d’informations sur les classements supplémentaires, consultez Prise en charge du classement et d’Unicode.
Exemples
R. Remplacer les crochets et les accolades par des parenthèses
La requête suivante remplace les crochets et les accolades dans la chaîne d’entrée par des parenthèses :
SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()');
Voici le jeu de résultats obtenu.
2*(3+4)/(7-2)
Appels équivalents à REPLACE
Dans l’instruction SELECT suivante, vous voyez un groupe de quatre appels imbriqués à la fonction REPLACE. Ce groupe est équivalent à l’appel unique de la fonction TRANSLATE dans l’instruction SELECT précédente :
SELECT
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
'2*[3+4]/{7-2}',
'[',
'('
),
']',
')'
),
'{',
'('
),
'}',
')'
);
B. Convertir les points GeoJSON en WKT
GeoJSON est un format d’encodage de plusieurs structures de données géographiques. Avec la fonction TRANSLATE
, les développeurs peuvent facilement convertir les points GeoJSON au format WKT et vice versa. La requête suivante remplace les crochets et les accolades dans l’entrée par des parenthèses :
SELECT TRANSLATE('[137.4,72.3]' , '[,]', '( )') AS Point,
TRANSLATE('(137.4 72.3)' , '( )', '[,]') AS Coordinates;
Voici le jeu de résultats obtenu.
Point | Coordinates |
---|---|
(137.4 72.3) | [137.4,72.3] |
C. Utiliser la fonction TRANSLATE
SELECT TRANSLATE('abcdef','abc','bcd') AS Translated,
REPLACE(REPLACE(REPLACE('abcdef','a','b'),'b','c'),'c','d') AS Replaced;
Voici le jeu de résultats obtenu.
Traduit | Remplacé |
---|---|
bcddef | ddddef |