17.3.1 探索条件の指定
(1) 機能
DML中に記述した探索条件に従って論理演算が実行され,その結果が真のものだけが検索対象になります。探索条件は次の個所に指定できます。
-
FETCH文のWHERE句
-
FIND文のWHERE句
(2) 形式
探索条件::=比較条件 〔AND 比較条件 〕… 比較条件::=構成要素名{=|>|<|>=|<=}条件値 条件値::={:埋込み変数 |構成要素に対応する値 |(構成要素に対応する値〔,構成要素に対応する値〕…)}
(3) 説明
- ●:埋込み変数
-
構成要素と比較する値を保持する埋込み変数の名称を指定します。
- ●構成要素に対応する値
-
構成要素と比較する値を指定します。1つの定数を指定します。
- ●(構成要素に対応する値〔,構成要素に対応する値〕…)
-
集団項目内の基本項目と比較する値を指定します。集団項目内の各基本項目に対する値を定義順,かつ過不足なく指定する必要があります。
(4) 共通規則
-
探索条件に指定できる比較条件の個数の最大は64です。
-
埋込み変数を指定する場合,比較する構成要素と構成が一致していて,かつ比較できるデータ型である必要があります。埋込み変数については,マニュアル「HiRDB 構造型データベース機能(UAP開発編)」の「埋込み変数の宣言」を参照してください。
-
構成要素に対応する値の指定形式については,「17.2.2(2) 変換(代入,比較)できるデータ型」を参照してください。
-
HiRDB/SDデータベースアクセスユティリティ(pdsdbexe)のDMLコマンドに埋込み変数を指定できません。
-
OCCURS句を指定して生成された構成要素名を使用する場合は,引用符(")で囲んでください。OCCURS句については,「11.7.1(4)(g) OCCURS」を参照してください。
-
比較条件のうち,比較対象の構成要素が次のどれかを満たす条件を,インデクスキーの条件と呼びます。
-
構成要素名にインデクスの先頭の構成要素を指定した条件
-
構成要素名に集団項目を指定した場合は次のすべてを満たす条件
・集団項目の先頭からインデクス定義に指定した構成要素が定義順にもれなく連続していること
・インデクス構成要素以外を含まないこと
なお,上記を満たしている場合,インデクス定義の構成要素をすべて含まなくてもインデクスキーの条件として扱います(前方からの部分一致でもインデクスキーの条件と見なします)。
(例)
-
-
レコード型内の検索では,指定されたインデクスキーの条件に従いインデクスを選択します。インデクス選択規則については「17.3.2 インデクス選択規則」を参照してください。
-
集団項目を指定した場合の比較条件の結果を次に示します。
-
=を指定した場合
集団項目下のおのおのの基本項目と,対応する値を比較し,すべて「=」である場合に真となります。それ以外の場合は偽になります。
-
>を指定した場合
集団項目下のおのおのの基本項目と,対応する値を先頭から順番に「=」の間,比較します。最初に現れた「=」ではない基本項目と対応する値の関係が「>」の場合に真,「<」の場合に偽となります。なお,すべての要素が「=」の場合は偽となります。
-
<を指定した場合
集団項目下のおのおのの基本項目と,対応する値を先頭から順番に「=」の間,比較します。最初に現れた「=」ではない基本項目と対応する値の関係が「<」の場合に真,「>」の場合に偽となります。なお,すべての要素が「=」の場合は偽となります。
-
>=を指定した場合
集団項目下のおのおのの基本項目と,対応する値を先頭から順番に「=」の間,比較します。最初に現れた「=」ではない基本項目と対応する値の関係が「>」の場合に真,「<」の場合に偽となります。なお,すべての要素が「=」の場合は真となります。
-
<=を指定した場合
集団項目下のおのおのの基本項目と,対応する値を先頭から順番に「=」の間,比較します。最初に現れた「=」ではない基本項目と対応する値の関係が「<」の場合に真,「>」の場合に偽となります。なお,すべての要素が「=」の場合は真となります。
(例)
-
-
SDBデータベースの横分割を指定したレコードでは,従来の条件(バージョン10-03で指定可能な形式)だけを指定できます。