SQLite クエリで正規表現を使用するにはどうすればいいですか? 質問する

SQLite クエリで正規表現を使用するにはどうすればいいですか? 質問する

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 ファイルがどこかにあるはずです。

おすすめ記事