×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
MySQL で文字列中の指定文字列の置き換えを行う方法として REPLACE 関数があります。
REPLACE 関数は以下の様な引数をとります。
1 2 3 4 | REPLACE (str, from_str, to_str) -- str : 対象文字列 -- from_str : 置換対象文字列 -- to_str : 置換文字列 |
なお、この関数はマルチバイトセーフです。
それでは、REPLACE 関数の使用例を示します。
■[REPLACE関数]の例
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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関数]のマルチバイトの例
それでは上記の例を全て全角の文字列に替えて実行してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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) |
コメント