TRANSLATE (Transact-SQL)

適用於:SQL Server 2017 (14.x) 及更新版本 Azure SQL DatabaseAzure SQL 受控執行個體

將第二個引數中指定的部分字元轉譯成第三個引數中所指定一組目的地字元之後,會傳回提供作為第一個引數的字串。

Syntax

TRANSLATE ( inputString, characters, translations )

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

inputString

要搜尋的字串運算式inputString 可以是任何字元資料類型 (nvarchar、varchar、nchar、char)。

characters

包含所應取代字元的字串運算式characters 可以是任何字元資料類型。

translations

包含取代字元的字串運算式translations 必須與 characters 是一樣的資料類型和長度。

傳回類型

傳回資料類型與 inputString 相同的字元運算式,其中會以第三個引數中相符的字元取代第二個引數中字元。

備註

如果 characterstranslations 運算式的長度不同,則 TRANSLATE 函數會傳回錯誤。 如果任何引數是 NULL,TRANSLATE 會傳回 NULL。

TRANSLATE 函式的行為類似於使用多個 REPLACE 函式。 然而,TRANSLATE 不會多次取代 inputString 中的任何個別字元。 characters 參數中單一值可以取代 inputString 中的多個字元。

這與多個 REPLACE 函式的行為不同,因為每個函式呼叫都會取代相關的所有字元,即使先前的巢狀 REPLACE 函式呼叫已取代這些字元也一樣。

TRANSLATE 永遠是 SC 定序感知。 如需補充定序的詳細資訊,請參閱定序與 Unicode 支援

範例

A. 將方括號和大括號取代為一般括號

下列查詢會將輸入字串中的方括號和大括號取代為括號:

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

以下為結果集。

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

呼叫 REPLACE 的對等用法

下列的 SELECT 陳述式中,您會看到四個巢狀呼叫 REPLACE 函數的群組。 此群組相當於對上一個 SELECT 中的 TRANSLATE 呼叫一次:

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

B. 將 GeoJSON 點轉換成 WKT

GeoJSON 是一種格式,可針對數個不同的地理資料結構編碼。 開發人員可以利用 TRANSLATE 函數,輕鬆地將 GeoJSON 點轉換為 WKT 格式,反之亦然。 下列查詢會以一般括號取代輸入中的括號與大括號:

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

以下為結果集。

Point 座標
(137.4 72.3) [137.4,72.3]

C. 使用 TRANSLATE 函式

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

以下為結果集。

已轉譯 已取代
bcddef ddddef

另請參閱