メインコンテンツまでスキップ

TRANSLATE

説明

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

構文

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

パラメータ

パラメータ説明
<source>変換される元の文字列。型: VARCHAR
<from>置換される文字の集合。型: VARCHAR
<to>置換文字の集合。型: VARCHAR

戻り値

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

文字マッピングルール:

  • 'from'と'to'の文字列内の位置に基づいて一対一の文字マッピングを確立
  • 'from'の1文字目は'to'の1文字目にマップされ、2文字目は2文字目に、というように続く
  • 'from'に重複する文字が含まれている場合、最初に出現したもののマッピングを使用し、後続の重複は無視
  • 'from'文字列にない元文字列の文字は変更されない

特殊なケース:

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

  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