%FIND (SQL)
構文
scalar-expression %FIND valueset [SIZE ((nn))]
説明
%FIND 述語では、valueset に指定された値と一致するデータ値を選択し、一連のビットマップ・チャンク内の値を反復処理することで、結果セットをフィルタ処理できます。この一致は、scalar-expression の値が valueset 内の値と一致したときに成功します。valueset の値がスカラ式のいずれの値とも一致しない場合、%FIND は NULL 文字列を返します。表示モードに関係なく、この照合は常に、論理 (内部保存) データ値に対して実行されます。
%FIND は、他の比較条件と同様に、SELECT 文の WHERE 節または HAVING 節の中で使用します。
%FIND では、抽象的な、プログラムで指定された一致する値のセットを使用して、フィールド値をフィルタ処理できます。具体的には、抽象的な、プログラムで指定されたビットマップを使用して、RowId フィールドの値をフィルタ処理できます。その場合、valueset はビットマップ・インデックスの添え字の層と同じように機能します。
このユーザ定義クラスは、抽象クラス %SQL.AbstractFindOpens in a new tab から派生します。この抽象クラスには、ContainsItem()Opens in a new tab ブーリアン・メソッドが定義されています。ContainsItem() メソッドは、scalar-expression の値を valueset の値とマッチングします。
一連のビットマップ・チャンク内の値に対する反復処理は、以下の 3 つのメソッドを使用して実行されます。
-
GetChunk(c)Opens in a new tab は、チャンク番号が c であるビットマップ・チャンクを返します。
-
NextChunk(.c)Opens in a new tab は、チャンク番号が c より大きい最初のビットマップ・チャンクを返します。
-
PreviousChunk(.c)Opens in a new tab は、チャンク番号が c より小さい最初のビットマップ・チャンクを返します。
これらの 4 つのメソッドの詳細は、%SQL.AbstractFindOpens in a new tab を参照してください。
照合タイプ
%FIND はマッチングの対象となる列と同じ照合タイプを使用します。既定では、文字列データ型フィールドは大文字と小文字が区別されない SQLUPPER 照合で定義されます。現在のネームスペースにおける既定の文字列の照合を定義し、フィールド/プロパティの定義における既定以外のフィールドの照合タイプを指定することができます。列に別の照合タイプが割り当てられている場合、その照合タイプを %FIND substring にも適用する必要があります。ケース変換関数の詳細は、"%SQLUPPER" を参照してください。
SIZE 節
オプションの %FIND SIZE 節には整数 nn が提供され、これによって valueset 内の値の桁数が指定されます。InterSystems IRIS はこの桁数を使用して、最適なクエリ・プランを決定します。nn は、10、100、1000、10000、その他のいずれかのリテラルで指定します。nn は、コンパイル時に定数値として使用可能であることが要求されるため、すべての SQL コードでリテラルとして指定する必要があります。埋め込み SQL を除くすべての SQL で、示されるように入れ子の括弧を指定する必要があります。
%FIND と %INSET の比較
-
%INSET は、最も単純で最も一般的なインタフェースです。ContainsItem() メソッドをサポートします。
-
%FIND は、ビットマップ・インデックスを使ったビットマップ・チャンクの反復処理をサポートします。ObjectScript の $ORDER 関数の機能をエミュレートし、NextChunk()、PreviousChunk()、GetChunk() の各反復処理メソッドと、ContainsItem() メソッドをサポートします。
引数
scalar-expression
その値を valueset と比較するスカラ式 (通常はテーブルの RowId フィールド)。
valueset
ビットマップ・チャンクの反復処理メソッドと ContainsItem() メソッドを実装するユーザ定義オブジェクトへのオブジェクト参照 (oref)。このメソッドは、一連のデータ値を取り、scalar-expression 内の値との一致があったときにブーリアン値を返します。
SIZE ((nn))
クエリの最適化に使用される、桁数を表す整数 (10、100、1000 など) (オプション)。