SQLite で正規表現を使う

【環境】
CentOS 7


CentOS 7 の SQLite(標準パッケージ)単体では、正規表現を使えない。

以下からモジュールのソースを入手して、.so ライブラリをロードすれば使えるようになる。
https://github.com/ralight/sqlite3-pcre

ビルド

ビルドには、sqlite-devel パッケージが必要。

$ make
cc -shared -o pcre.so   -fPIC -W -Werror pcre.c -lpcre   -Wl,-z,defs

使い方

ライブラリのロード

sqlite> .load /path-to/pcre.so

※毎回設定するのが面倒な場合は、~/.sqliterc にロードの記述をする。

正規表現を使ったSQLの書式

sqlite> ... WHERE x REGEXP <regex>

試す

テストデータを用意。

sqlite> select * FROM sample;
os
--------------------
Mac OS X 10.9
Mac OS X 10.10
Mac OS X 10.11
Mac OS X 10.12
Mac OS X 10.13
Windows NT 6.3
Windows NT 10.0

ライブラリをロードする。

sqlite> .load ./pcre.so

正規表現でSELECTする。

sqlite> select * FROM sample WHERE os REGEXP '[0-9]\.[0-9]$';
os
--------------------
Mac OS X 10.9
Windows NT 6.3
Windows NT 10.0