sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan fungerer funktionen TRANSLATE() i SQL Server (T-SQL)

I SQL Server, T-SQL TRANSLATE() funktion returnerer den streng, der er angivet som et første argument, efter nogle tegn, der er angivet i det andet argument, er oversat til et destinationssæt af tegn, der er angivet i det tredje argument.

Det ligner REPLACE() funktion, men med nogle vigtige forskelle.

TRANSLATE() funktion kræver 3 argumenter; inputstrengen, de tegn, der skal erstattes, og de tegn, der skal erstatte dem.

Syntaks

Syntaksen ser sådan ud:

TRANSLATE ( inputString, characters, translations)

Hvor inputString er den streng, der indeholder de tegn, der skal erstattes.

tegnene argument angiver, hvilke tegn der skal erstattes.

oversættelserne argument angiver, hvad disse tegn skal erstattes med.

Eksempel 1 – Grundlæggende brug

Her er et eksempel på, hvordan det virker:

SELECT TRANSLATE('Cat', 'at', 'ow') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| Cow      |
+----------+

Så i dette eksempel er a og t tegn blev erstattet med o og w .

I dette tilfælde er REPLACE() funktion ville have givet det samme resultat. Her er de to funktioner side om side:

SELECT 
  TRANSLATE('Cat', 'at', 'ow') AS 'TRANSLATE',
  REPLACE('Cat', 'at', 'ow') AS 'REPLACE';

Resultat:

+-------------+-----------+
| TRANSLATE   | REPLACE   |
|-------------+-----------|
| Cow         | Cow       |
+-------------+-----------+

I dette tilfælde er resultatet for begge funktioner det samme, men af ​​forskellige årsager.

Her er, hvad hver funktion gjorde:

  • TRANSLATE() erstattet a og t (hver enkelt karakter)
  • REPLACE() erstattet at (strengen)

Eksempel 2 – Blandet rækkefølge

Dette eksempel viser hvor TRANSLATE() adskiller sig fra REPLACE() . I dette eksempel ændrer jeg rækkefølgen af ​​de tegn, der skal erstattes, samt de tegn, der skal erstatte dem:

SELECT 
  TRANSLATE('Cat', 'ta', 'wo') AS 'TRANSLATE',
  REPLACE('Cat', 'ta', 'wo') AS 'REPLACE';

Resultat:

+-------------+-----------+
| TRANSLATE   | REPLACE   |
|-------------+-----------|
| Cow         | Cat       |
+-------------+-----------+

I dette tilfælde kun TRANSLATE() funktion trådte i kraft. Dette skyldes, at denne funktion gennemgår hvert tegn en efter en. REPLACE() funktion på den anden side søger efter hele strengen i nøjagtig samme rækkefølge.

Eksempel 3 – Et mere kraftfuldt eksempel

Følgende eksempel er baseret på Microsoft-dokumentationen for TRANSLATE() fungere. Det viser et scenarie, hvor denne funktion har en betydelig fordel i forhold til REPLACE() funktion:

SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()') AS Result;

Resultat:

+---------------+
| Result        |
|---------------|
| 2*(3+4)/(7-2) |
+---------------+

For at få det tilsvarende resultat ved hjælp af REPLACE() funktion, skal vi gøre dette:

SELECT
REPLACE
(
      REPLACE
      (
            REPLACE
            (
                  REPLACE
                  (
                        '2*[3+4]/{7-2}',
                        '[',
                        '('
                  ),
                  ']',
                  ')'
            ),
            '{',
            '('
      ),
      '}',
      ')'
) AS Result;

Resultat:

+---------------+
| Result        |
|---------------|
| 2*(3+4)/(7-2) |
+---------------+

  1. Postgresql-opdatering med join

  2. T-SQL Spring over Tag lagret procedure

  3. STRING_AGG() Funktion i PostgreSQL

  4. C#:Send en brugerdefineret type til en Oracle-lagret procedure