TRANSLATE (Transact-SQL)

Si applica a: SQL Server 2017 (14.x) e alle sue versioni successive Database SQL di Azure Istanza gestita di 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 )

Argomenti

inputString

Espressione stringa in cui eseguire la ricerca. inputString può essere qualsiasi tipo di dati carattere (nvarchar, varchar, nchar, char).

characters

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

translations

Espressione 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. Per altre informazioni sulle regole di confronto supplementari, vedere Regole di confronto e supporto Unicode.

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}', '[]{}', '()()');

Il set di risultati è il seguente.

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

Chiamate equivalenti a REPLACE

Nell'istruzione SELECT seguente è presente un gruppo di quattro chiamate annidate 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 varie 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;

Il set di risultati è il seguente.

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;

Il set di risultati è il seguente.

Convertito Replaced
bcddef ddddef

Vedi anche