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 |