TRANSLATE (Transact-SQL)

適用範圍:是SQL Server 2017 (14.x)和更新版本 是Azure SQL Database是Azure SQL 受控執行個體

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

語法

TRANSLATE ( inputString, characters, translations)

注意

若要檢視 SQL Server 2014 與更早版本的 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 定序感知。

範例

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

另請參閱