sql >> Databasteknik >  >> RDS >> Sqlserver

Hur funktionen TRANSLATE() fungerar i SQL Server (T-SQL)

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() ersatte a och t (varje enskild karaktär)
  • REPLACE() ersatt at (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) |
+---------------+

  1. Android-åtkomst till fjärrbaserad SQL-databas

  2. När ska jag använda en tabellvariabel kontra temporär tabell i sql-servern?

  3. Lär dig hur du hanterar undantag i PL/SQL

  4. Hur man använder den lagrade proceduren 'sp_server_info' i SQL Server