Oracle の LIKE 関数と REGEX_LIKE 関数を使用してファジー クエリを実装する

PHPz
リリース: 2023-04-04 11:37:22
オリジナル
2704 人が閲覧しました

Oracle は、米国 Oracle Corporation によって開発および販売されているエンタープライズ レベルのリレーショナル データベース管理システムです。データ管理で広く使用されており、さまざまな種類のデータの保存と操作に使用できます。 Oracle データベースでは、特定のキーワードを含むデータをクエリすることが一般的な要件です。この記事では、Oracle の LIKE 関数と REGEX_LIKE 関数を使用してファジー クエリを実装する方法を紹介します。

    #LIKE 関数
LIKE 関数は、Oracle の最も基本的なあいまいクエリ関数の 1 つです。 LIKE 関数を使用してクエリを実行する場合、% を使用して任意の長さの文字を表すか、_ を使用して任意の 1 文字を表すことができます。たとえば、「apple」を含むレコードを検索するには、次の SQL ステートメントを使用できます。

SELECT * FROM table_name WHERE column_name LIKE '%apple%';

この SQL ステートメントは、 table_name テーブル column_name 列は、「apple」文字を含むすべてのレコードを返します。

特定の文字で始まるか終わるレコードをクエリするには、次の SQL ステートメントを使用できます。

-- 「apple」で始まるレコードをクエリ

SELECT * FROM table_name WHERE column_name LIKE ' apple%';

-- "apple" で終わるクエリ レコード

SELECT * FROM table_name WHERE column_name LIKE '%apple';

これらのステートメントは、table_name の column_name を返します。 table テキストが「apple」で始まるか終わる列。

    REGEX_LIKE 関数
REGEX_LIKE 関数は Oracle の正規表現関数の 1 つで、LIKE 関数によく似ていますが、より複雑なルールを使用してテキストを照合できます。たとえば、「dog」、「cat」、「hat」などの 3 文字を含む単語をクエリするには、次の SQL ステートメントを使用できます。

SELECT * FROM table_name WHERE REGEX_LIKE(column_name, '[ [:alpha :]]{3}');

この SQL ステートメントは、table_name テーブルの column_name 列をクエリし、3 文字を含むすべての単語を返します。

特定の文字列を含むレコードをクエリするには、REGEX_LIKE 関数で垂直バー (|) 演算子を使用できます。たとえば、「apple」と「banana」の両方を含むレコードをクエリするには、次の SQL ステートメントを使用できます。

SELECT * FROM table_name WHERE REGEX_LIKE(column_name, 'apple|banana');

この SQL ステートメントは、table_name テーブルの column_name 列をクエリし、「apple」または「banana」を含むすべてのレコードを返します。

    注意事項
LIKE 関数でも REGEX_LIKE 関数でも、クエリの実行時にはテーブル全体またはインデックス全体がスキャンされます。テーブルや頻繁なクエリを使用すると、パフォーマンスが低下する可能性があります。

より多くのデータを含む表の場合は、問合せのパフォーマンスを向上させるために、Oracle Text などの全文検索エンジンの使用を検討できます。さらに、正規表現を使用する場合は、繰り返しの一致や不必要な一致を避けるために、実際の状況に応じて正しいパターン マッチャーを作成する必要があります。

    概要
Oracle では、LIKE 関数と REGEX_LIKE 関数が 2 つの一般的なファジー クエリ メソッドです。これら 2 つの関数を使用すると、特定の文字を含むレコードや特定のルールに一致するレコードを簡単にクエリできます。実際のアプリケーションでは、クエリのパフォーマンスを向上させるために、テーブルのサイズとクエリ要件に基づいて選択する必要があります。

以上がOracle の LIKE 関数と REGEX_LIKE 関数を使用してファジー クエリを実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート