×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
MySQL で文字列から空白または指定した文字列を取り除く方法として TRIM LTRIM RTRIM 関数があります。
この関数はマルチバイトセーフなので、全角文字も1文字として扱われます。
なお、 TRIM 関数の説明は以下の通りです。
■[TRIM関数]の説明
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) -- {BOTH | LEADING | TRAILING} : TRIMする方法を指定する。 -- BOTH : 先頭からと最後尾からの両方からTRIM -- LEADING : 先頭からのTRIM -- TRAILING : 最後尾からのTRIM -- [remstr] : 削除対象文字列 -- str : TRIM対象文字列 TRIM([remstr FROM] str)
それでは順次、TRIM 関数の使用例を示します。
■[TRIM関数]の例
MariaDB [(none)]> SELECT -> TRIM(' ABC ') AS '一般的なTRIM' -> ,TRIM(BOTH '-' FROM '--ABC--') AS '指定文字列TRIM:BOTH' -> ,TRIM(LEADING '-' FROM '--ABC--') AS '指定文字列TRIM:LEADING' -> ,TRIM(TRAILING '-' FROM '--ABC--') AS '指定文字列TRIM:TRAILING' -> ; +--------------+---------------------+------------------------+-------------------------+ | 一般的なTRIM | 指定文字列TRIM:BOTH | 指定文字列TRIM:LEADING | 指定文字列TRIM:TRAILING | +--------------+---------------------+------------------------+-------------------------+ | ABC | ABC | ABC-- | --ABC | +--------------+---------------------+------------------------+-------------------------+ 1 row in set (0.03 sec)
確かに指定文字列を TRIM 処理されるのが分かります。
また、この関数はマルチバイトセーフなので、指定文字列を全て全角の文字にしてテストしてみます。
MariaDB [(none)]> SELECT -> TRIM(' あいう ') AS '一般的なTRIM' -> ,TRIM(BOTH 'あ' FROM 'ああABCああ') AS '指定文字列TRIM:BOTH' -> ,TRIM(LEADING 'あ' FROM 'ああABCああ') AS '指定文字列TRIM:LEADING' -> ,TRIM(TRAILING 'あ' FROM 'ああABCああ') AS '指定文字列TRIM:TRAILING' -> ; +--------------+---------------------+------------------------+-------------------------+ | 一般的なTRIM | 指定文字列TRIM:BOTH | 指定文字列TRIM:LEADING | 指定文字列TRIM:TRAILING | +--------------+---------------------+------------------------+-------------------------+ | あいう | ABC | ABCああ | ああABC | +--------------+---------------------+------------------------+-------------------------+ 1 row in set (0.01 sec)
最初の TRIM では全角空白は取除けないので、以下の様に BOTH 指定で全角空白を指定します。
MariaDB [(none)]> SELECT TRIM(BOTH ' ' FROM ' あいう '); +-----------------------------------+ | TRIM(BOTH ' ' FROM ' あいう ') | +-----------------------------------+ | あいう | +-----------------------------------+ 1 row in set (0.00 sec)
TRIM 対象文字列 '△あいう△'(空白を△)から空白が削除されています。
なお、BOTH 指定が無くても、以下の様に BOTH 指定と同様の処理となります。
MariaDB [(none)]> SELECT TRIM(BOTH ' ' FROM ' あいう '); +-----------------------------------+ | TRIM(BOTH ' ' FROM ' あいう ') | +-----------------------------------+ | あいう | +-----------------------------------+ 1 row in set (0.00 sec)
RTRIM 関数に関連してですが、文字列の空白を前後から削除する専門の関数として LTRIM RTRIM 関数があります。
LTRIM は文字列の先頭から、RTRIM は文字列の最後から空白を削除します。以下に例を示します。 (なお、これらの関数もマルチバイトセーフです。)
■[LTRIM関数][RTRIM関数]の例
MariaDB [(none)]> SELECT -> LTRIM(' ABC ') -> ,RTRIM(' ABC ') -> ,LTRIM(' あいう ') -> ,RTRIM(' あいう ') -> ; +------------------+------------------+---------------------+---------------------+ | LTRIM(' ABC ') | RTRIM(' ABC ') | LTRIM(' あいう ') | RTRIM(' あいう ') | +------------------+------------------+---------------------+---------------------+ | ABC | ABC | あいう | あいう | +------------------+------------------+---------------------+---------------------+ 1 row in set (0.00 sec)
TRIM された結果になっていると思うのですが、取り敢えず TRIM 結果に文字列を連結して確かめます。
MariaDB [(none)]> SELECT -> CONCAT(LTRIM(' ABC '), '/') -> ,CONCAT(RTRIM(' ABC '), '/') -> ,CONCAT(LTRIM(' あいう '), '/') -> ,CONCAT(RTRIM(' あいう '), '/') -> ; +-------------------------------+-------------------------------+----------------------------------+----------------------------------+ | CONCAT(LTRIM(' ABC '), '/') | CONCAT(RTRIM(' ABC '), '/') | CONCAT(LTRIM(' あいう '), '/') | CONCAT(RTRIM(' あいう '), '/') | +-------------------------------+-------------------------------+----------------------------------+----------------------------------+ | ABC / | ABC/ | あいう / | あいう/ | +-------------------------------+-------------------------------+----------------------------------+----------------------------------+ 1 row in set (0.03 sec)
PR
コメント