任意の式において、指定された文字をすべて、指定された別の文字に置き換えます。既存の文字は、characters_to_replace 引数および characters_to_substitute 引数内の位置により置換文字にマッピングされます。characters_to_replace 引数で characters_to_substitute 引数よりも多くの文字が指定されている場合、characters_to_replace 引数からの余分な文字は戻り値で省略されます。
TRANSLATE は、REPLACE 関数や REGEXP_REPLACE 関数 と似ています。ただし、REPLACE は 1 つの文字列全体を別の文字列に置換し、REGEXP_REPLACE を使用すると正規表現パターンの文字列を検索できますが、TRANSLATE は複数の単一文字置換を行います。
いずれかの引数が null である場合、戻り値は NULL
になります。
構文
TRANSLATE( expression, characters_to_replace, characters_to_substitute )
引数
- expression
-
変換する式。
- characters_to_replace
-
置換する文字を含む文字列。
- characters_to_substitute
-
代入する文字を含む文字列。
戻り型
VARCHAR
例
文字列内の複数の文字を置き換えるには、次の例を使用します。
SELECT TRANSLATE('mint tea', 'inea', 'osin');
+-----------+
| translate |
+-----------+
| most tin |
+-----------+
次の例では、TICKIT サンプルデータベースの USERS テーブルからのデータを使用します。詳細については、「サンプルデータベース」を参照してください。
列内のすべての値のアットマーク (@) をピリオドに置き換えるには、次の例を使用します。
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 |
+----------------+---------------+