sqlite で正規表現を使用したいのですが、方法がわかりません。
私のテーブルには、次のような文字列の列があります: "3,12,13,14,19,28,32" ここで、「where x LIKE '3'」と入力すると、13 や 32 などの値を含む行も取得されますが、その文字列に正確に値 3 が含まれる行のみを取得したいと思います。
これを解決する方法を誰か知っていますか?
ベストアンサー1
すでに他の人が指摘しているように、REGEXPはユーザー定義関数を呼び出しますが、これは最初に定義されてデータベースにロードされる必要があります。一部のsqliteディストリビューションやGUIツールにはデフォルトで含まれているかもしれませんが、私のUbuntuインストールには含まれていませんでした。解決策は次のとおりです。
sudo apt-get install sqlite3-pcre
Perl正規表現をロード可能なモジュールに実装します/usr/lib/sqlite3/pcre.so
これを使用するには、データベースを開くたびにロードする必要があります。
.load /usr/lib/sqlite3/pcre.so
または、その行を に入れることもできます~/.sqliterc
。
次のようにクエリを実行できます。
SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';
コマンドラインから直接クエリを実行する場合は、-cmd
スイッチを使用して SQL の前にライブラリをロードできます。
sqlite3 "$filename" -cmd ".load /usr/lib/sqlite3/pcre.so" "SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';"
Windows を使用している場合は、同様の .dll ファイルがどこかにあるはずです。