CONTAINS 関数
CONTAINS 関数は、検索引数に指定した基準を使用してテキスト検索索引を検索し、 一致が見つかったかどうかを示す値を戻します。
関数の構文
スキーマは SYSIBM です。関数のパラメーター
- column-name
- 検索対象のテキスト検索索引が付けられた列の修飾された名前または無修飾の名前。 列は、ステートメント内の FROM 節で指定されている表またはビュー内に存在していなければならず、 その表の列、またはビューの基礎となる基本表の列はテキスト検索索引と 関連付けられていなければなりません (SQLSTATE 38H12)。 ビューの列の基礎となる式は、基礎表の列への (直接または別のネストされたビューを通した) 簡単な列参照でなければなりません。
- search-argument
- 検索対象の用語の入ったストリング値 (LOB 以外) を戻す式。 このストリング値は、すべてブランクまたは空ストリングではありません (SQLSTATE 42815)。 式の結果であるストリング値は 4096 バイト以下でなければなりません (SQLSTATE 42815)。 値は Unicode に変換されてから、テキスト検索索引の検索に使用されます。 照会ごとの用語の最大数は 1024 を超過してはなりません (SQLSTATE 38H10)。
- string-constant
関数で有効な検索引数オプションを指定するストリング定数。
search-argument-options の一部として指定できるオプションは、以下のとおりです。
- QUERYLANGUAGE = locale
- Db2® Text Search エンジンが Db2 テキスト列でテキスト検索を実行するときに使用するロケールを指定します。 値はサポートされる任意のロケールです。 QUERYLANGUAGE を指定しなかった場合、 デフォルトであるテキスト検索索引のロケールが使用されます。 テキスト検索索引の LANGUAGE パラメーターが AUTO である場合、QUERYLANGUAGE のデフォルト値は en_US です。
- RESULTLIMIT = value
オプティマイザーが、SCORE を取得するために結果セットの各行に対して検索エンジンを呼び出すプランを選択する場合、RESULTLIMIT オプションはパフォーマンスに影響を及ぼしません。 しかし、検索エンジンが結果セット全体に対して一度に呼び出される場合、RESULTLIMIT は FETCH FIRST 節のような働きをします。
同じ照会で RESULTLIMIT を指定する複数のテキスト検索を使用する場合、同じ search-argument を使用してください。 異なる search-argument 値を使用すると、期待される結果が得られない場合があります。
パーティション・テキスト索引の場合、結果の制限が各パーティションに別々に適用されます。
- SYNONYM = OFF | ON
- テキスト検索索引に関連付けられた同義語ディクショナリーを使用するかどうかを指定します。 デフォルトは off です。 同義語を使用するには、Synonyms Tool を使用して同義語ディクショナリーをテキスト検索索引に追加します。
- OFF
- 同義語ディクショナリーを使用しません。
- ON
- テキスト検索索引に関連付けられた同義語ディクショナリーを使用します。
この関数の結果は長精度整数 (large integer) です。 2 番目の引数が NULL になる可能性がある場合、結果は NULL になる可能性があります。2 番目の引数が NULL の場合、結果は NULL になります。 3 番目の引数が NULL の場合、結果は 3 番目の引数を指定しなかった場合と同様です。 CONTAINS は、検索引数に指定された基準に一致するものが文書に含まれている場合、整数値 1 を戻します。 それ以外の場合は、0 を戻します。
CONTAINS は、一律の結果を生じない関数です。
注: テキスト検索関数内の検索引数としてパラメーター・マーカーを使用する場合は、追加のステップを実行する必要があります。 パラメーター・マーカーは、JDBC および ODBC プログラムでプリコンパイルされた場合、タイプを持ちませんが、テキスト検索関数内の検索引数はストリング値に解決されなければなりません。 不明なタイプのパラメーター・マーカーはストリング値に解決できないため (SQLCODE
-418)、パラメーター・マーカーを明示的に VARCHAR データ・タイプにキャストする必要があります。
例
- 次の照会は、レジュームに COBOL のあるすべての従業員を検索するために使用されます。 テキスト検索引数は、大/小文字を区別しません。
SELECT EMPNO FROM EMP_RESUME WHERE RESUME_FORMAT = 'ascii' AND CONTAINS(RESUME, 'COBOL') = 1 - 次の C プログラムでは、完全一致語
ateが COMMENT 列で検索されます。char search_arg[100]; /* input host variable */ ... EXEC SQL DECLARE C3 CURSOR FOR SELECT CUSTKEY FROM CUSTOMERS WHERE CONTAINS(COMMENT, :search_arg) = 1 ORDER BY CUSTKEY; strcpy(search_arg, "ate"); EXEC SQL OPEN C3; ... - 次の照会を使用して、
fossil fuelのスペイン語に相当するcombustible fósilという句を含む オンライン・エッセーを書いた 10 人の学生を検索します。 関連付けられたテキスト検索索引用の同義語ディクショナリーが作成されています。 必要なのは 10 人の学生だけなので、基礎となるテキスト検索サーバーからの結果の数を制限する RESULTLIMIT オプションを使用して、 照会を最適化します。SELECT FIRSTNME, LASTNAME FROM STUDENT_ESSAYS WHERE CONTAINS(TERM_PAPER, 'combustible fósil', 'QUERYLANGUAGE= es_ES RESULTLIMIT = 10 SYNONYM=ON') = 1
