SQLite の正規表現演算子
-
正規表現
とは -
Regex
を SQLite にインストールする方法 -
SQLite のクエリで
Regex
を使用する - SQLite のコマンド ラインから正規表現を使用する
-
SQLite での
Regex
の代替
関数を使用すると、SQLite がはるかに簡単になり、データ処理がはるかに高速になる傾向があります。 これを拡張したのが regex
演算子です。これは、クエリを短縮し、ユーザーがデータをより高速に処理できるようにすることで、より良いユーザー エクスペリエンスを提供するためによく使用されます。
正規表現
とは
Regex
は、ユーザーが正規表現を参照したい場合に使用する句です。 その主な目的は、ユーザー定義関数を呼び出してデータベースにロードし、regex
句の後に追加された追加タスクを実行することです。
関数は、ユーザーが必要とするあらゆるアクティビティを実行できます。 ただし、regex
を使用する前に、関数を定義してロードする必要があることに注意することが重要です。
これを事前に行わないと、regex
句を使用するとエラー メッセージが表示されます。 これは、デフォルトでリンクされる機能がないためです。
したがって、これを効果的に使用するには、アプリケーションで関数を作成し、SQLite ドライバーへのコールバック リンクを提供する必要があります。
Regex
を SQLite にインストールする方法
ほとんどの場合、SQLite の regex
はパッケージに付属しています。 一部の SQLite ディストリビューションまたは GUI ツールで使用できますが、すべての場合ではありません。
そのため、インストールする必要がある可能性が高くなります。 これを行う方法についての段階的なチュートリアルを次に示します。
-
端末に次のコードを記述します。
sudo apt-get install sqlite3-pcre
-
これで、Perl 正規表現がロード可能なファイルにインストールされました。
/usr/lib/sqlite3/pcre.so
にあります。 -
使用するには、次を使用してロードする必要があります。
.load /usr/lib/sqlite3/pcre.so
これで、SQLite で regex
句を簡単に使用できるようになりました。 ファイルを適切に使用するには、毎回ファイルをロードする必要があることに注意してください。
これを回避する方法は、~/.sqliterc
に行を追加することです。 このように、SQLite を開くたびに行が自動的に実行されます。
SQLite のクエリで Regex
を使用する
SQLite で regex
を使用するには、まず関数を作成する必要があることがわかったので、簡単な関数を作成しましょう。 関数の名前は 'regexp'
である必要があることに注意することが重要です。これは、regex
関数が使用する関数を識別するのに役立ちます。
関数の内容を変更するか、上書きして新しい関数を作成することにより、いつでも関数を変更できます。 以下に例を示します。
sqlite_create_function ( 'regexp', 0, sub {return time} );
この関数は現在の時刻を返します。 これをテーブルに追加するには、単純なコード行を使用して挿入できます。
INSERT INTO table_name (regexp());
関数が作成されたので、regex
クエリを使用する準備が整いました。 正しく使用することを忘れないでください。 最後に 'P'
を追加する必要があります。
したがって、式には WHERE x REGEXP <regex>
のようなものが含まれます。
上記で作成した関数で演算子を使用してみましょう。 以下のコードを使用して、正しく実行してください。
SELECT * from table_name
WHERE column_name REGEXP '\bA\w+'
このコードでは、単語が文字 'A'
で始まるテーブル内のすべてのコンテンツを表示できます。
'A'
で始まる値を表示する別の例を次に示しますが、今回は大文字と小文字が区別されます。
SELECT * from table_name
WHERE column_name REGEXP '(?i:\bA\w+)'
注: 関数を作成するための構文は、使用している言語によって異なる場合があります。
SQLite のコマンド ラインから正規表現を使用する
コマンド ラインで作業する場合、~/.sqliterc
の内容によっては、regex
コマンドを実行するためにファイルをロードする必要がある場合があります。 代わりに、事前に関数を作成している限り、いつでもコマンドラインから直接 regex
を使用できます。
構文は同じままですが、-cmd
スイッチを使用してコードを記述する前に、ライブラリをロードする必要があります。 SQLite 3
で動作する例を次に示します。
sqlite3 "$file_name" -cmd
".load /usr/lib/sqlite3/pcre.so"
"SELECT fld FROM table_name
WHERE fld REGEXP '\b3\b';"
このようにして、別の SQLite アプリケーションを開かなくても、システムのコマンド ラインから直接クエリを実行できます。
SQLite での Regex
の代替
別の例を取り上げて、数値 3 を含むテーブル内のすべての値を提供するクエリを作成するとします。 regex
演算子を使用してこれを行っていた場合、次のように行うことができます。
SELECT * FROM table_name
WHERE x REGEXP '(^|,)(3)(,|$)'
別の方法を次に示します。
SELECT fld FROM table_name
WHERE fld REGEXP '\b3\b';
どちらの場合も、実行前に適切な関数が既に作成されていると想定しています。
REGEX
を使用せずにこれを別の方法で行う必要があるとします。 その場合、以下のような比較的複雑なクエリを常に使用できます。
SELECT * FROM table_name
WHERE ',' || x || ',' LIKE '%,3,%'
どちらの方法でも問題なく機能しますが、より多くのロジック構築が必要なクエリを処理する場合は、regex
演算子を選択することをお勧めします。
これは、大量のメモリを消費する非常に長く複雑なクエリになる可能性があり、すべての場合に問題を解決できない可能性があるためです。 regex
演算子はあいまいさを取り除き、そのクエリに割り当てられるメモリを減らします。
regex
演算子について知っておくべきことは以上です。 オペレーターを簡単に使用できるように、提供された情報が役立つことを願っています。
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub