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.

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.

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.

Traduit Remplacé
bcddef ddddef

Voir aussi