本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對於給定的表達式,以指定的替換值取代所有出現的指定字元。現有字元依位置映射至 characters_to_replace 和 characters_to_substitute 引數中的替換字元。如果 characters_to_replace 引數中指定的字元數比 characters_to_substitute 引數更多,傳回值中會省略 characters_to_replace 引數中額外的字元。
TRANSLATE 類似於 REPLACE 函數 和 REGEXP_REPLACE 函數,但 REPLACE 會將一整個字串替換成另一個字串,REGEXP_REPLACE 可讓您在字串中搜尋規則表達式模式,而 TRANSLATE 會進行多次單一字元替換。
如果任何引數為 Null,則傳回值為 NULL
。
語法
TRANSLATE( expression, characters_to_replace, characters_to_substitute )
引數
- 運算式
-
要轉換的表達式。
- characters_to_replace
-
包含要取代之字元的字串。
- characters_to_substitute
-
包含替換字元的字串。
傳回類型
VARCHAR
範例
若要取代字串中的幾個字元,請使用下列範例。
SELECT TRANSLATE('mint tea', 'inea', 'osin');
+-----------+
| translate |
+-----------+
| most tin |
+-----------+
下列範例使用 TICKIT 範例資料庫中 USERS 資料表的資料。如需詳細資訊,請參閱範本資料庫。
若要對某欄的所有值,以點取代 at 符號 (@),請使用下列範例。
SELECT email, TRANSLATE(email, '@', '.') as obfuscated_email
FROM users LIMIT 10;
+---------------------------------------+---------------------------------------+
| email | obfuscated_email |
+---------------------------------------+---------------------------------------+
| Cum@accumsan.com | Cum.accumsan.com |
| lorem.ipsum@Vestibulumante.com | lorem.ipsum.Vestibulumante.com |
| non.justo.Proin@ametconsectetuer.edu | non.justo.Proin.ametconsectetuer.edu |
| non.ante.bibendum@porttitortellus.org | non.ante.bibendum.porttitortellus.org |
| eros@blanditatnisi.org | eros.blanditatnisi.org |
| augue@Donec.ca | augue.Donec.ca |
| cursus@pedeacurna.edu | cursus.pedeacurna.edu |
| at@Duis.com | at.Duis.com |
| quam@facilisisvitaeorci.ca | quam.facilisisvitaeorci.ca |
| mi.lorem@nunc.edu | mi.lorem.nunc.edu |
+---------------------------------------+---------------------------------------+
若要對某欄的所有值,以點底線取代空格並剔除點,請使用下列範例。
SELECT city, TRANSLATE(city, ' .', '_')
FROM users
WHERE city LIKE 'Sain%' OR city LIKE 'St%'
GROUP BY city
ORDER BY city;
+----------------+---------------+
| city | translate |
+----------------+---------------+
| Saint Albans | Saint_Albans |
| Saint Cloud | Saint_Cloud |
| Saint Joseph | Saint_Joseph |
| Saint Louis | Saint_Louis |
| Saint Paul | Saint_Paul |
| St. George | St_George |
| St. Marys | St_Marys |
| St. Petersburg | St_Petersburg |
| Stafford | Stafford |
| Stamford | Stamford |
| Stanton | Stanton |
| Starkville | Starkville |
| Statesboro | Statesboro |
| Staunton | Staunton |
| Steubenville | Steubenville |
| Stevens Point | Stevens_Point |
| Stillwater | Stillwater |
| Stockton | Stockton |
| Sturgis | Sturgis |
+----------------+---------------+