MySQLで正規表現、文字列のトリム
10月 24th, 2008 by
key
仕事でちょろっとお勉強した内容のメモ。
■正規表現マッチ
PostgreSQLだと~演算子(正規表現)があって、MySQLにも無いものかと探していたらREGEXP演算子というのがあった。
例えばアクセスログから携帯電話のHTTP_USER_AGENTを拾うにはこんなふうにする。
mysql> SELECT DISTINCT user_agent FROM access_log WHERE ua REGEXP '^(docomo|up\.browser|kddi|vodafone|softbank).*';
■文字列のトリム
文字列の先方から特定の文字を削除する。
mysql> select TRIM(LEADING 'x' FROM 'xxxtargetxxx'); +---------------------------------------+ | TRIM(LEADING 'x' FROM 'xxxtargetxxx') | +---------------------------------------+ | targetxxx | +---------------------------------------+ 1 row in set (0.00 sec)
後方から削除するにはTRAILINGにする。
mysql> select TRIM(TRAILING 'x' FROM 'xxxtargetxxx'); +----------------------------------------+ | TRIM(TRAILING 'x' FROM 'xxxtargetxxx') | +----------------------------------------+ | xxxtarget | +----------------------------------------+ 1 row in set (0.00 sec)
前後両方とも削除するにはBOTHにする。
mysql> select TRIM(BOTH 'x' FROM 'xxxtargetxxx'); +------------------------------------+ | TRIM(BOTH 'x' FROM 'xxxtargetxxx') | +------------------------------------+ | target | +------------------------------------+ 1 row in set (0.00 sec)

