In SQL Server, T-SQL TRANSLATE()
La funzione restituisce la stringa fornita come primo argomento dopo che alcuni caratteri specificati nel secondo argomento sono stati tradotti in un insieme di caratteri di destinazione specificato nel terzo argomento.
È simile a REPLACE()
funzione, ma con alcune differenze importanti.
Il TRANSLATE()
la funzione richiede 3 argomenti; la stringa di input, i caratteri da sostituire ei caratteri per sostituirli.
Sintassi
La sintassi è questa:
TRANSLATE ( inputString, characters, translations)
Dove inputString è la stringa che contiene i caratteri da sostituire.
I caratteri argomento specifica quali caratteri devono essere sostituiti.
Le traduzioni argomento specifica con cosa devono essere sostituiti quei caratteri.
Esempio 1 – Utilizzo di base
Ecco un esempio di come funziona:
SELECT TRANSLATE('Cat', 'at', 'ow') AS Result;
Risultato:
+----------+ | Result | |----------| | Cow | +----------+
Quindi in questo esempio, il at
e t
i caratteri sono stati sostituiti con o
e w
.
In questo caso, il REPLACE()
funzione avrebbe prodotto lo stesso risultato. Ecco le due funzioni affiancate:
SELECT TRANSLATE('Cat', 'at', 'ow') AS 'TRANSLATE', REPLACE('Cat', 'at', 'ow') AS 'REPLACE';
Risultato:
+-------------+-----------+ | TRANSLATE | REPLACE | |-------------+-----------| | Cow | Cow | +-------------+-----------+
In questo caso, il risultato per entrambe le funzioni è lo stesso, ma per ragioni diverse.
Ecco cosa faceva ciascuna funzione:
TRANSLATE()
sostituitoat
et
(ogni singolo personaggio)REPLACE()
sostituitoat
(la stringa)
Esempio 2 – Ordine misto
Questo esempio mostra dove TRANSLATE()
differisce da REPLACE()
. In questo esempio, cambio l'ordine dei caratteri da sostituire, così come i caratteri per sostituirli:
SELECT TRANSLATE('Cat', 'ta', 'wo') AS 'TRANSLATE', REPLACE('Cat', 'ta', 'wo') AS 'REPLACE';
Risultato:
+-------------+-----------+ | TRANSLATE | REPLACE | |-------------+-----------| | Cow | Cat | +-------------+-----------+
In questo caso solo il TRANSLATE()
funzione è entrata in vigore. Questo perché questa funzione passa attraverso ogni carattere uno per uno. Il REPLACE()
funzione d'altra parte, cerca l'intera stringa, esattamente nello stesso ordine.
Esempio 3:un esempio più potente
L'esempio seguente si basa sulla documentazione Microsoft per TRANSLATE()
funzione. Dimostra uno scenario in cui questa funzione ha un vantaggio significativo rispetto a REPLACE()
funzione:
SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()') AS Result;
Risultato:
+---------------+ | Result | |---------------| | 2*(3+4)/(7-2) | +---------------+
Per ottenere il risultato equivalente utilizzando REPLACE()
funzione, dovremmo farlo:
SELECT REPLACE ( REPLACE ( REPLACE ( REPLACE ( '2*[3+4]/{7-2}', '[', '(' ), ']', ')' ), '{', '(' ), '}', ')' ) AS Result;
Risultato:
+---------------+ | Result | |---------------| | 2*(3+4)/(7-2) | +---------------+