TRANSLATE (Transact-SQL)

Si applica a: sìSQL Server 2017 (14.x) e versioni successive Sìdatabase SQL di Azure

Restituisce la stringa fornita come primo argomento dopo che alcuni caratteri specificati nel secondo argomento sono stati convertiti in un set di caratteri di destinazione specificato nel terzo argomento.

Sintassi

TRANSLATE ( inputString, characters, translations)

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 e versioni precedenti, vedere Documentazione delle versioni precedenti.

Argomenti

inputStringEspressione stringa da cercare. inputString può essere qualsiasi tipo di dati carattere (nvarchar, varchar, nchar, char).

charactersEspressione stringa contenente i caratteri da sostituire. characters può essere qualsiasi tipo di dati carattere.

translationsEspressione stringa contenente i caratteri sostitutivi. Il tipo di dati e la lunghezza di translations devono corrispondere al tipo di dati e alla lunghezza di characters.

Tipi restituiti

Restituisce un'espressione di caratteri dello stesso tipo di dati di inputString in cui i caratteri del secondo argomento vengono sostituiti con i caratteri corrispondenti del terzo argomento.

Osservazioni

La funzione TRANSLATE restituirà un errore se le espressioni characters e translations hanno lunghezze diverse. TRANSLATE restituisce NULL se uno degli argomenti è NULL.

Il comportamento della funzione TRANSLATE è simile all'uso di più funzioni REPLACE. TRANSLATE non sostituisce, tuttavia, alcun carattere singolo in inputString più di una volta. Un singolo valore nel parametro characters può sostituire più caratteri in inputString.

Questo comportamento è diverso da quello di più funzioni REPLACE, perché ogni chiamata di funzione sostituirà tutti i caratteri rilevanti, anche se sono stati sostituiti da una chiamata della funzione REPLACE annidata precedente.

TRANSLATE riconosce sempre le regole di confronto SC.

Esempi

R. Sostituire le parentesi quadrate e graffe con parentesi normali

La query seguente sostituisce le parentesi quadrate e graffe nella stringa di input con parentesi normali:

SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()');

Questo è il set di risultati.

2*(3+4)/(7-2)

Chiamate equivalenti a REPLACE

Nell'istruzione SELECT seguente è presente un gruppo di quattro chiamate nidificate dirette alla funzione REPLACE. Questo gruppo è equivalente alla chiamata singola effettuata alla funzione TRANSLATE nell'istruzione SELECT precedente:

SELECT
REPLACE
(
      REPLACE
      (
            REPLACE
            (
                  REPLACE
                  (
                        '2*[3+4]/{7-2}',
                        '[',
                        '('
                  ),
                  ']',
                  ')'
            ),
            '{',
            '('
      ),
      '}',
      ')'
);

B. Convertire i punti GeoJSON in WKT (well-known text)

GeoJSON è un formato per la codifica di un'ampia gamma di strutture di dati geografici. La funzione TRANSLATE consente agli sviluppatori di convertire facilmente i punti GeoJSON in formato WKT e viceversa. La query seguente sostituisce le parentesi quadrate e graffe nell'input con parentesi normali:

SELECT TRANSLATE('[137.4, 72.3]' , '[,]', '( )') AS Point,
    TRANSLATE('(137.4 72.3)' , '( )', '[,]') AS Coordinates;

Questo è il set di risultati.

Point Coordinate
(137.4 72.3) [137.4,72.3]

C. Usare la funzione TRANSLATE

SELECT TRANSLATE('abcdef','abc','bcd') AS Translated,
       REPLACE(REPLACE(REPLACE('abcdef','a','b'),'b','c'),'c','d') AS Replaced;

I risultati sono:

Convertito Sostituito
bcddef ddddef

Vedere anche