メインコンテンツまでスキップ
バージョン: 26.x

TRANSLATE

概要

TRANSLATE関数は文字単位の文字列置換を実行し、マッピングルールに従ってソース文字列内の文字を変換します。この関数は、ソース文字列内の各文字のうち'from'文字列に含まれる文字を、'to'文字列の同じ位置にある対応する文字で置き換えます。

構文

TRANSLATE(<source>, <from>, <to>)

パラメータ

Parameterデスクリプション
<source>変換される元の文字列。型: VARCHAR
<from>置換対象の文字セット。型: VARCHAR
<to>置換後の文字セット。型: VARCHAR

Return Value

VARCHAR型を返します。文字マッピングルールに従って変換された文字列を表します。

文字マッピングルール:

  • 'from'と'to'の文字列内の位置に基づいて一対一の文字マッピングを確立します
  • 'from'の1番目の文字は'to'の1番目の文字にマップされ、2番目は2番目に、という順序で対応します
  • 'from'に重複する文字が含まれる場合、最初に出現するマッピングを使用し、その後の重複は無視されます
  • 'from'文字列に含まれていないソース文字列内の文字は変更されずに残ります

特殊ケース:

  • いずれかのパラメータがNULLの場合、NULLを返します
  • ソースが空文字列の場合、空文字列を返します
  • 'from'が空文字列の場合、元のソース文字列を返します
  • 'to'が空文字列の場合、'from'に含まれるソース内のすべての文字を削除します
  • 'to'文字列が'from'より短い場合、余剰の'from'文字に対応するソース内の文字は削除されます

Examples

  1. 基本的な文字置換
SELECT translate('abcd', 'a', 'z');
+---------------------------+
| translate('abcd', 'a', 'z') |
+---------------------------+
| zbcd |
+---------------------------+
  1. 同一文字の複数回置換
SELECT translate('abcda', 'a', 'z');
+----------------------------+
| translate('abcda', 'a', 'z') |
+----------------------------+
| zbcdz |
+----------------------------+
  1. 特殊文字の置換
SELECT translate('Palhoça', 'ç', 'c');
+--------------------------------+
| translate('Palhoça', 'ç', 'c') |
+--------------------------------+
| Palhoca |
+--------------------------------+
  1. 文字の削除(空の'to'文字列)
SELECT translate('abcd', 'a', '');
+----------------------------+
| translate('abcd', 'a', '') |
+----------------------------+
| bcd |
+----------------------------+
  1. 'from'文字列内の重複文字(最初のマッピングのみを使用)
SELECT TRANSLATE('abacad', 'aac', 'zxy');
+-----------------------------------+
| TRANSLATE('abacad', 'aac', 'zxy') |
+-----------------------------------+
| zbzyzd |
+-----------------------------------+
  1. 'to'文字列が'from'より短い場合(余分な文字を削除)
SELECT TRANSLATE('abcde', 'ace', 'xy');
+-------------------------------+
| TRANSLATE('abcde', 'ace', 'xy') |
+-------------------------------+
| xbyd |
+-------------------------------+
  1. UTF-8文字置換
SELECT TRANSLATE('ṭṛì ḍḍumai', 'ṭṛ', 'ab');
+-----------------------------------+
| TRANSLATE('ṭṛì ḍḍumai', 'ṭṛ', 'ab') |
+-----------------------------------+
| abì ḍḍumai |
+-----------------------------------+
  1. 数値文字の置換
SELECT TRANSLATE('a1b2c3', '123', 'xyz');
+----------------------------------+
| TRANSLATE('a1b2c3', '123', 'xyz') |
+----------------------------------+
| axbycz |
+----------------------------------+
  1. 特殊記号の置換
SELECT TRANSLATE('hello@world.com', '@.', '-_');
+--------------------------------------------+
| TRANSLATE('hello@world.com', '@.', '-_') |
+--------------------------------------------+
| hello-world_com |
+--------------------------------------------+

キーワード

TRANSLATE