に最終更新
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' の余った位置に対応する元の文字列の文字を削除します
例
- 基本的な文字の置換
SELECT translate('abcd', 'a', 'z');
+---------------------------+
| translate('abcd', 'a', 'z') |
+---------------------------+
| zbcd |
+---------------------------+
- 同じ文字が複数回現れる場合の置換
SELECT translate('abcda', 'a', 'z');
+----------------------------+
| translate('abcda', 'a', 'z') |
+----------------------------+
| zbcdz |
+----------------------------+
- 特殊な文字の置換
SELECT translate('Palhoça', 'ç', 'c');
+--------------------------------+
| translate('Palhoça', 'ç', 'c') |
+--------------------------------+
| Palhoca |
+--------------------------------+
- 文字の削除('to' が空文字列の場合)
SELECT translate('abcd', 'a', '');
+----------------------------+
| translate('abcd', 'a', '') |
+----------------------------+
| bcd |
+----------------------------+
- 'from' に重複する文字がある場合(最初の対応関係のみを使用)
SELECT TRANSLATE('abacad', 'aac', 'zxy');
+-----------------------------------+
| TRANSLATE('abacad', 'aac', 'zxy') |
+-----------------------------------+
| zbzyzd |
+-----------------------------------+
- 'to' が 'from' より短い場合(余った文字を削除)
SELECT TRANSLATE('abcde', 'ace', 'xy');
+-------------------------------+
| TRANSLATE('abcde', 'ace', 'xy') |
+-------------------------------+
| xbyd |
+-------------------------------+
- UTF-8 文字の置換
SELECT TRANSLATE('ṭṛì ḍḍumai', 'ṭṛ', 'ab');
+-----------------------------------+
| TRANSLATE('ṭṛì ḍḍumai', 'ṭṛ', 'ab') |
+-----------------------------------+
| abì ḍḍumai |
+-----------------------------------+
- 数字の置換
SELECT TRANSLATE('a1b2c3', '123', 'xyz');
+----------------------------------+
| TRANSLATE('a1b2c3', '123', 'xyz') |
+----------------------------------+
| axbycz |
+----------------------------------+
- 記号の置換
SELECT TRANSLATE('hello@world.com', '@.', '-_');
+--------------------------------------------+
| TRANSLATE('hello@world.com', '@.', '-_') |
+--------------------------------------------+
| hello-world_com |
+--------------------------------------------+
キーワード
TRANSLATE