Udostępnij za pomocą


TRANSLATE (Transact-SQL)

Dotyczy: SQL Server 2017 (14.x) i nowsze wersje usługi Azure SQL DatabaseAzure SQL Managed Instance

Zwraca ciąg podany jako pierwszy argument, po przetłumaczeniu niektórych znaków określonych w drugim argumencie na docelowy zestaw znaków określony w trzecim argumencie.

Składnia

TRANSLATE ( inputString, characters, translations )

Arguments

inputString

Wyrażenie ciągu do wyszukania. inputString może być dowolnym typem danych znaków (nvarchar, varchar, nchar, char).

Znaków

Wyrażenie ciągu zawierające znaki, które należy zamienić. znaki mogą być dowolnym typem danych znaków.

Tłumaczenia

Wyrażenie ciągu zawierające znaki zastępcze. tłumaczenia muszą mieć ten sam typ danych i długość co znaki.

Typy zwracane

Zwraca wyrażenie znaków tego samego typu danych co inputString , gdzie znaki z drugiego argumentu są zastępowane znakami pasującymi z trzeciego argumentu.

Uwagi

TRANSLATE Funkcja zwróci błąd, jeśli znaki i wyrażenia tłumaczenia mają różne długości. TRANSLATE funkcja zwróci wartość NULL, jeśli którykolwiek z argumentów ma wartość NULL.

Zachowanie funkcji jest podobne do używania TRANSLATE wielu funkcji REPLACE . TRANSLATE Nie zastępuje jednak żadnego pojedynczego znaku więcej inputString niż raz. Pojedyncza wartość w parametrze może zastąpić wiele znaków w elemencie charactersinputString.

Różni się to od zachowania wielu REPLACE funkcji, ponieważ każde wywołanie funkcji zastąpiłoby wszystkie odpowiednie znaki, nawet jeśli zostały zastąpione przez poprzednie zagnieżdżone REPLACE wywołanie funkcji.

TRANSLATE jest zawsze świadomy sortowania sc. Aby uzyskać więcej informacji na temat dodatkowych sortowania, zobacz Obsługa sortowania i unicode.

Przykłady

A. Zastępowanie nawiasów klamrowych i nawiasów klamrowych zwykłymi nawiasami klamrowymi

Następujące zapytanie zastępuje nawiasy kwadratowe i nawiasy klamrowe w ciągu wejściowym nawiasami:

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

Oto zestaw wyników.

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

Równoważne wywołania funkcji REPLACE

W poniższej instrukcji SELECT zostanie wyświetlona grupa czterech zagnieżdżonych wywołań funkcji REPLACE. Ta grupa jest równoważna jednemu wywołaniu funkcji TRANSLATE w poprzednim elemencie SELECT:

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

B. Konwertowanie punktów GeoJSON na WKT

GeoJSON to format kodowania kilku struktur danych geograficznych. TRANSLATE Dzięki funkcji deweloperzy mogą łatwo konwertować punkty GeoJSON na format WKT i na odwrót. Następujące zapytanie zastępuje nawiasy kwadratowe i nawiasy klamrowe w danych wejściowych zwykłymi nawiasami klamrowymi:

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

Oto zestaw wyników.

Point Współrzędne
(137.4 72.3) [137.4,72.3]

C. Korzystanie z funkcji TRANSLATE

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

Oto zestaw wyników.

Przetłumaczony Zastąpione
bcddef ddddef

Zobacz także