I SQL Server, T-SQL TRANSLATE()
funktion returnerar strängen som tillhandahålls som ett första argument efter att några tecken som anges i det andra argumentet har översatts till en måluppsättning tecken som anges i det tredje argumentet.
Det liknar REPLACE()
funktion, men med några viktiga skillnader.
TRANSLATE()
funktionen kräver 3 argument; inmatningssträngen, tecknen som ska ersättas och tecknen som ska ersätta dem.
Syntax
Syntaxen ser ut så här:
TRANSLATE ( inputString, characters, translations)
Där inputString är strängen som innehåller tecknen som ska ersättas.
tecken argument anger vilka tecken som ska ersättas.
översättningarna argument anger vad dessa tecken ska ersättas med.
Exempel 1 – Grundläggande användning
Här är ett exempel på hur det fungerar:
SELECT TRANSLATE('Cat', 'at', 'ow') AS Result;
Resultat:
+----------+ | Result | |----------| | Cow | +----------+
Så i det här exemplet är a
och t
tecken ersattes med o
och w
.
I det här fallet används REPLACE()
funktion skulle ha gett samma resultat. Här är de två funktionerna sida vid sida:
SELECT TRANSLATE('Cat', 'at', 'ow') AS 'TRANSLATE', REPLACE('Cat', 'at', 'ow') AS 'REPLACE';
Resultat:
+-------------+-----------+ | TRANSLATE | REPLACE | |-------------+-----------| | Cow | Cow | +-------------+-----------+
I det här fallet är resultatet för båda funktionerna detsamma, men av olika anledningar.
Så här gjorde varje funktion:
TRANSLATE()
ersattea
ocht
(varje enskild karaktär)REPLACE()
ersattat
(strängen)
Exempel 2 – Blandad ordning
Det här exemplet visar var TRANSLATE()
skiljer sig från REPLACE()
. I det här exemplet ändrar jag ordningen på de tecken som ska ersättas, såväl som de tecken som ska ersätta dem:
SELECT TRANSLATE('Cat', 'ta', 'wo') AS 'TRANSLATE', REPLACE('Cat', 'ta', 'wo') AS 'REPLACE';
Resultat:
+-------------+-----------+ | TRANSLATE | REPLACE | |-------------+-----------| | Cow | Cat | +-------------+-----------+
I det här fallet endast TRANSLATE()
funktionen trädde i kraft. Detta beror på att denna funktion går igenom varje tecken en efter en. REPLACE()
funktion å andra sidan, letar efter hela strängen, i exakt samma ordning.
Exempel 3 – Ett mer kraftfullt exempel
Följande exempel är baserat på Microsoft-dokumentationen för TRANSLATE()
fungera. Den visar ett scenario där den här funktionen har en betydande fördel jämfört med REPLACE()
funktion:
SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()') AS Result;
Resultat:
+---------------+ | Result | |---------------| | 2*(3+4)/(7-2) | +---------------+
För att få motsvarande resultat med REPLACE()
funktion måste vi göra detta:
SELECT REPLACE ( REPLACE ( REPLACE ( REPLACE ( '2*[3+4]/{7-2}', '[', '(' ), ']', ')' ), '{', '(' ), '}', ')' ) AS Result;
Resultat:
+---------------+ | Result | |---------------| | 2*(3+4)/(7-2) | +---------------+