https://github.com/mysqludf/lib_mysqludf_preg/branches
mysqlでperl互換の正規表現を使う場合のメモ。
gentooのパッケージの場合のインストール。
$ sudo ACCEPT_KEYWORDS="~*" emerge --oneshot -avt dev-db/lib_mysqludf_preg
設置されたファイルなどの確認。
$ qlist lib_mysqludf_preg
マニュアルなどの確認。
$ lv /usr/share/doc/lib_mysqludf_preg-1.0.1/README.bz2 $ w3m /usr/share/doc/lib_mysqludf_preg-1.0.1/html/index.html $ lv /usr/share/doc/lib_mysqludf_preg-1.0.1/installdb.sql.bz2
関数のインストール。
$ bzcat /usr/share/doc/lib_mysqludf_preg-1.0.1/uninstalldb.sql.bz2 | mysql -uroot -p $ bzcat /usr/share/doc/lib_mysqludf_preg-1.0.1/installdb.sql.bz2 | mysql -uroot -p
テスト。文字の置換。REPLACEなどで代用できるのであれば必要無し。
mysql> SELECT PREG_REPLACE( '/fox/i' , 'dog' , 'The brown fox' ); +----------------------------------------------------+ | PREG_REPLACE( '/fox/i' , 'dog' , 'The brown fox' ) | +----------------------------------------------------+ | The brown dog | +----------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT REPLACE('The brown fox', 'fox', 'dog'); +----------------------------------------+ | REPLACE('The brown fox', 'fox', 'dog') | +----------------------------------------+ | The brown dog | +----------------------------------------+ 1 row in set (0.00 sec)
テスト。文字のマッチ。LIKE,REGEXPなどで代用できるのであれば必要無し。
mysql> SELECT PREG_RLIKE('/java/i' , 'abc javascript 123.'); +-----------------------------------------------+ | PREG_RLIKE('/java/i' , 'abc javascript 123.') | +-----------------------------------------------+ | 1 | +-----------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT PREG_RLIKE('/java(?!script)/i' , 'abc javascript 123.'); +---------------------------------------------------------+ | PREG_RLIKE('/java(?!script)/i' , 'abc javascript 123.') | +---------------------------------------------------------+ | 0 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT 'abc javascript 123.' LIKE '%java%'; +-------------------------------------+ | 'abc javascript 123.' LIKE '%java%' | +-------------------------------------+ | 1 | +-------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT 'abc javascript 123.' REGEXP 'java'; +-------------------------------------+ | 'abc javascript 123.' REGEXP 'java' | +-------------------------------------+ | 1 | +-------------------------------------+ 1 row in set (0.00 sec)
バージョン。配布サイトの1.0の最新はdev-1.0.2だった。
mysql> SELECT LIB_MYSQLUDF_PREG_INFO(); +--------------------------+ | LIB_MYSQLUDF_PREG_INFO() | +--------------------------+ | lib_mysqludf_preg 1.0.1 | +--------------------------+ 1 row in set (0.00 sec)
pcreであれば簡単に書けるのに、という処理が無い、とか、
DB => プログラムへ絞り込みの途中の文字列を全部持ってきてOK、とか、
絞り込んだ後の結果を使ってSQLを発行しない、とか、
であれば、全然必要無い。