忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

MySQL 文字列中の指定文字列の置き換え方法について(REPLACE)

MySQL で文字列中の指定文字列の置き換えを行う方法として REPLACE 関数があります。

REPLACE 関数は以下の様な引数をとります。

REPLACE(str, from_str, to_str)
-- str      : 対象文字列
-- from_str : 置換対象文字列
-- to_str   : 置換文字列

なお、この関数はマルチバイトセーフです。
それでは、REPLACE 関数の使用例を示します。

■[REPLACE関数]の例

MariaDB [(none)]> SELECT
    ->     REPLACE('0000-01-1234', '-', '/')   AS '文字列の置換'
    ->    ,REPLACE('0000-01-1234', '-', '**')  AS '置換文字列が2文字以上'
    ->    ,REPLACE('0000--01--1234', '--', '***')   AS '置換対象文字列が2文字以上'
    ->    ,REPLACE('0000--88--1234', '--', '')   AS '置換文字列が空文字'
    ->    ,REPLACE('0000--88--1234', '**', '')   AS '置換対象文字列が存在無し'
    -> ;
+--------------+-----------------------+---------------------------+--------------------+--------------------------+
| 文字列の置換 | 置換文字列が2文字以上 | 置換対象文字列が2文字以上 | 置換文字列が空文字 | 置換対象文字列が存在無し |
+--------------+-----------------------+---------------------------+--------------------+--------------------------+
| 0000/01/1234 | 0000**01**1234        | 0000***01***1234          | 0000881234         | 0000--88--1234           |
+--------------+-----------------------+---------------------------+--------------------+--------------------------+
1 row in set (0.00 sec)

確かに置換対象文字列、置換文字列が2文字以上であっても置換処理が行われるのが分かります。
また、置換文字列が空文字列の場合は、置換対象文字列を省いた文字列が返されます。(ある特定の文字を削除する時に使えそうです)
なお、置換対象文字列が、対象文字列に存在しない場合は置換処理無しで対象文字列そのものを返します。


■[REPLACE関数]のマルチバイトの例

それでは上記の例を全て全角の文字列に替えて実行してみます。

MariaDB [(none)]> SELECT
    ->     REPLACE('0000-01-1234', '-', '/')   AS '文字列の置換'
    ->    ,REPLACE('0000-01-1234', '-', '**')  AS '置換文字列が2文字以上'
    ->    ,REPLACE('0000--01--1234', '--', '***')   AS '置換対象文字列が2文字以上'
    ->    ,REPLACE('0000--88--1234', '--', '')   AS '置換文字列が空文字'
    ->    ,REPLACE('0000--88--1234', '**', '')   AS '置換文字列が存在無し'
    -> ;
+--------------------------+------------------------------+----------------------------------+--------------------+----------------------------+
| 文字列の置換             | 置換文字列が2文字以上        | 置換対象文字列が2文字以上        | 置換文字列が空文字 | 置換文字列が存在無し       |
+--------------------------+------------------------------+----------------------------------+--------------------+----------------------------+
| 0000/01/1234 | 0000**01**1234 | 0000***01***1234 | 0000881234 | 0000--88--1234 |
+--------------------------+------------------------------+----------------------------------+--------------------+----------------------------+
1 row in set (0.00 sec)











PR

コメント

コメントを書く