TRANSLATE (Transact-SQL)

S’applique à :yesSQL Server 2017 (14.x) et versions ultérieures YesAzure SQL Database YesAzure 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)

Notes

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 et versions antérieures, consultez Versions antérieures de la documentation.

Arguments

inputString Est l’expression de chaîne à rechercher. inputString peut être n’importe quel type de données caractère (nvarchar, varchar, nchar, char).

characters Est une expression de chaîne contenant des caractères à remplacer. characters peut être n’importe quel type de données caractère.

translations Est 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.

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, il existe 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 diverses 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;

Les résultats sont :

Traduit Remplacé
bcddef ddddef

Voir aussi