TRANSLATE (Transact-SQL)
適用於: SQL Server 2017 (14.x) 及更新版本 Azure SQL 資料庫 Azure SQL 受控執行個體
將第二個引數中指定的部分字元轉譯成第三個引數中所指定一組目的地字元之後,會傳回提供作為第一個引數的字串。
語法
TRANSLATE ( inputString, characters, translations )
引數
inputString
要搜尋的字串運算式。 inputString 可以是任何字元資料類型 (nvarchar、varchar、nchar、char)。
characters
包含所應取代字元的字串運算式。 characters 可以是任何字元資料類型。
translations
包含取代字元的字串運算式。 translations 必須與 characters 是一樣的資料類型和長度。
傳回類型
傳回資料類型與 inputString 相同的字元運算式,其中會以第三個引數中相符的字元取代第二個引數中字元。
備註
如果 characters 和 translations 運算式的長度不同,則 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 |