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()ersatteaocht(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) | +---------------+