CONTAINS
CONTAINS 関数は、検索引数で指定した基準を使用してテキスト検索索引を検索し、一致項目が見つかったかどうかについての結果を戻します。
>>-CONTAINS--(--column-name--,--search-argument--+----------------------------+--)->< '-,--search-argument-options-'
search-argument-options .-------------------------------. V | (1) |----+-QUERYLANGUAGE-- = --value-+-+----------------------------| +-RESULTLIMIT-- = --value---+ | .-OFF-. | '-SYNONYM-- = --+-ON--+-----'
- 同じ文節を複数回指定することはできません。
- column-name
- 検索するテキスト検索索引がある列の修飾名または非修飾名を指定します。この列は、ステートメントの FROM 文節で指定されている表またはビューになければならず、表の列、またはビューの基礎となる基本表の列には関連付けられたテキスト検索索引がなければなりません。 ビューの列の基礎となる式は、基礎表の列を、直接または他のネストされたビューを介して参照する単純な列参照であることが必要です。
- search-argument
- 検索する用語が含まれる、文字ストリング・データ・タイプまたはグラフィック・ストリング・データ・タイプを戻す式です。空ストリングであったり、すべてを空白にしたりすることはできません。このストリングの実際の長さが Unicode への変換後に 32,740 バイトを超えてはならず、検索引数構文で指定されたテキスト検索限界や用語数を超えてもなりません。search-argument 構文については、テキスト検索引数の構文を参照してください。
- search-argument-options
- 検索に使用する検索引数オプションが含まれている文字ストリング値またはグラフィック・ストリング値。定数または変数でなければなりません。
- search-argument-options の一部として指定できるオプションは、以下のとおりです。
- QUERYLANGUAGE = value
- 言語値を指定します。この値は、サポートされている任意の言語コードにすることできます。QUERYLANGUAGE を指定しないと、この関数の呼び出し時に使用されるテキスト検索索引の言語値がデフォルトとなります。テキスト検索索引の言語値が AUTO の場合、QUERYLANGUAGE のデフォルト値は en_US です。照会言語オプションについては、テキスト検索の言語オプションを参照してください。
- RESULTLIMIT = value
- 基礎となる検索エンジンから戻される結果の最大数を指定します。value は、1 から 2,147,483,647 の整数でなければなりません。RESULTLIMIT を指定しないと、照会での結果に制限がなくなります。
オプティマイザーが選択するプランによって、結果表の各行に対して CONTAINS が呼び出されることもあれば、呼び出されない場合もあります。基礎となる検索エンジンに対する照会で CONTAINS がいったん呼び出されると、検索エンジンから、一致する ROWID または主キーすべての結果セットが戻されます。その後、この結果セットはそうした結果行を識別する列が含まれる表に結合されます。 この場合、RESULTLIMIT 値は基礎となるテキスト検索エンジンからの FETCH FIRST n ROWS ONLY のような動作になり、最適化のために使用できます。オプティマイザーが最適なプランであると判断し、CONTAINS が結果の各行に対して呼び出される場合には、RESULTLIMIT オプションは無効です。
- SYNONYM = OFF または SYNONYNM = ON
- テキスト検索索引に関連付けられている同義語ディクショナリーを使用するかどうかを指定します。デフォルトは OFF です。
- オフ
- 同義語ディクショナリーを使用しません。
- ON
- テキスト検索索引に関連付けられている同義語ディクショナリーを使用します。
search-argument-options が空ストリングまたは NULL 値の場合、この関数は search-argument-options が指定されていない場合のように評価されます。
この関数の結果は長精度整数になります。 search-argument を NULL にできる場合には、結果が NULL になる可能性があります。search-argument が NULL の場合、結果も NULL 値になります。
この列に、search-argument で指定された検索基準と一致する項目が含まれている場合には、結果は 1 になります。 それ以外の場合、結果は 0 です。 この列に NULL 値が含まれている場合、結果は 0 です。
CONTAINS は非決定性関数です。
注意
前提条件: CONTAINS および SCORE 関数を使用するためには、OmniFind® Text Search Server for DB2® for i がインストールされ、開始されている必要があります。
規則: ビュー、ネストされた表の式、または共通表式で、スカラー関数 CONTAINS または SCORE の対象になるテキスト検索列を用意する場合に、その該当するビュー、ネストされた表の式、共通表式の最外部の SELECT ステートメントで DISTINCT 文節を使用するのであれば、SELECT リストに、テキスト検索索引のすべての対応するキー・フィールドを組み込む必要があります。
ビュー、ネストされた表の式、または共通表式で、スカラー関数 CONTAINS または SCORE の対象になるテキスト検索列を用意する場合は、その該当するビュー、ネストされた表の式、または共通表式の最外部の SELECT で、UNION、EXCEPT、INTERSECT を使用できません。
共通表式で、スカラー関数 CONTAINS または SCORE の対象になるテキスト検索列を用意する場合に、その後、その共通表式を照会全体の中で再度参照できるのは、その参照によって、スカラー関数 CONTAINS または SCORE の対象になるテキスト検索列を用意しない場合に限られます。
CONTAINS および SCORE スカラー関数は、照会が以下を指定する場合には使用できません。
- 分散表
- 読み取りトリガーを指定する表
- 複数の物理ファイル・メンバー上に構築された論理ファイル
例
- 以下のステートメントは、履歴書に「COBOL」が含まれる従業員すべてを検出します。このテキスト検索引数には、大/小文字の区別はありません。
SELECT EMPNO FROM EMP_RESUME WHERE RESUME_FORMAT = 'ascii' AND CONTAINS(RESUME, 'cobol') = 1
- オンライン論文にスペイン語の「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
- COMMENT 列で「ate」というストリングを検出します。検索引数を提供するためにホスト変数を使用します。
char search_arg[100]; ... EXEC SQL DECLARE C1 CURSOR FOR SELECT CUSTKEY FROM CUSTOMERS WHERE CONTAINS(COMMENT, :search_arg) = 1 ORDER BY CUSTKEY; strcpy(search_arg, "ate"); EXEC SQL OPEN C1;