Delen via


TRANSLATE (Transact-SQL)

Van toepassing op: SQL Server 2017 (14.x) en latere versies Van Azure SQL DatabaseAzure SQL Managed Instance

Retourneert de tekenreeks die is opgegeven als eerste argument, nadat sommige tekens die zijn opgegeven in het tweede argument, zijn vertaald in een doelset tekens, die is opgegeven in het derde argument.

Syntaxis

TRANSLATE ( inputString, characters, translations )

Arguments

inputString

De tekenreeksexpressie die moet worden doorzocht. inputString kan elk gegevenstype voor tekens zijn (nvarchar, varchar, nchar, char).

karakters

Een tekenreeksexpressie met tekens die moeten worden vervangen. tekens kunnen elk gegevenstype voor tekens zijn.

Translations

Een tekenreeksexpressie met de vervangende tekens. vertalingen moeten hetzelfde gegevenstype en dezelfde lengte hebben als tekens.

Retourtypen

Retourneert een tekenexpressie van hetzelfde gegevenstype als inputString waarbij tekens uit het tweede argument worden vervangen door de overeenkomende tekens uit het derde argument.

Opmerkingen

TRANSLATE retourneert een fout als tekens en vertalingenexpressies verschillende lengten hebben. TRANSLATE retourneert NULL als een van de argumenten NULL is.

Het gedrag van de TRANSLATE functie is vergelijkbaar met het gebruik van meerdere REPLACE-functies . TRANSLATE vervangt echter niet elk afzonderlijk teken in inputString meer dan één keer. Eén waarde in de characters parameter kan meerdere tekens vervangen in inputString.

Dit is niet hetzelfde als het gedrag van meerdere REPLACE functies, omdat elke functieaanroep alle relevante tekens zou vervangen, zelfs als ze waren vervangen door een vorige geneste REPLACE functieaanroep.

TRANSLATE is altijd SC-sorteringsbewust. Zie sortering en Unicode-ondersteuning voor meer informatie over aanvullende sorteringen.

Voorbeelden

Eén. Vierkante accolades en accolades vervangen door gewone accolades

De volgende query vervangt vierkante accolades in de invoertekenreeks door haakjes:

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

Hier is het resultatenoverzicht.

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

Gelijkwaardige aanroepen naar REPLACE

In de volgende SELECT-instructie ziet u een groep van vier geneste aanroepen naar de functie REPLACE. Deze groep is gelijk aan de aanroep van de functie TRANSLATE in de voorgaande SELECT:

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

B. GeoJSON-punten converteren naar WKT

GeoJSON is een indeling voor het coderen van verschillende geografische gegevensstructuren. Met de TRANSLATE functie kunnen ontwikkelaars eenvoudig GeoJSON-punten converteren naar WKT-indeling en omgekeerd. De volgende query vervangt vierkante accolades in invoer door gewone accolades:

SELECT TRANSLATE('[137.4,72.3]' , '[,]', '( )') AS Point,
    TRANSLATE('(137.4 72.3)' , '( )', '[,]') AS Coordinates;

Hier is het resultatenoverzicht.

Point Coördinaten
(137.4 72.3) [137.4,72.3]

C. De functie TRANSLATE gebruiken

SELECT TRANSLATE('abcdef','abc','bcd') AS Translated,
       REPLACE(REPLACE(REPLACE('abcdef','a','b'),'b','c'),'c','d') AS Replaced;

Hier is het resultatenoverzicht.

Vertaling Vervangen
bcddef ddddef

Zie ook