メインコンテンツまでスキップ
に最終更新

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