条件

条件は、1つ以上の式および論理(ブール)演算子の組合せを指定したものです。OLAP式構文には、次のタイプの条件があります。

単純比較条件

比較条件は、1つの式と別の式を比較します。このような比較の結果は、TrueFalseまたはNULLになります。

次の比較演算子を使用できます。

単純比較演算子
演算子
説明
>
より大きい
>=
以上
<
未満
<=
以下
=
等しい

!=
^=

等しくない
<>
より大きい、またはより小さい

構文

expr { > | >= | < | <= | = | != | ^= | <> } expr 

引数

exprは、任意の式にできます。

5 > 3はTrue、4 != 5はTrue、6 >= 9はFalseです。

グループ比較条件

グループ比較条件は、リストまたは副問合せの任意あるいはすべてのメンバーとの比較を指定します。

次の比較演算子を使用できます。

グループ比較演算子
演算子
説明
>
より大きい
>=
以上
<
未満
<=
以下
=
等しい

!=
^=

等しくない
<>
より大きい、またはより小さい

ANY
SOME

リストの1つ以上の値が一致する場合はTrueを返し、値が一致しない場合はFalseを返します。
ALL
リストのすべての値が一致する場合はTrueを返し、1つ以上の値が一致しない場合はFalseを返します。

構文

expr
     { = | != | ^= | <> | > | < | >= | <= }
     { ANY | SOME | ALL }
     ({ expression_list | subquery })


5 >= ALL (5, 10, 15)はTrue、5 <> ANY (5, 10, 15) はTrueです。

(color, size) = SOME (('RED', 'L'), ('GREEN', 'M'))は、Lの赤およびMの緑のアイテムの場合はTrueを返します。

範囲条件

BETWEEN演算子は、値が、特定の値範囲内にあるかどうかをテストします。テストしている値が下限値以上かつ上限値以下であれば、Trueを返します。

構文

expr [ NOT ] BETWEEN expr AND expr

7 NOT BETWEEN 10 AND 15はTrueです。

複数条件

論理積は、1つの式と2つの条件を比較します。

論理積
演算子
説明
AND
両方の構成条件がTRUEである場合にTRUEを返します。条件のいずれかがFALSEである場合はFALSEを返します。そのいずれでもない場合、UNKNOWNを返します。
OR
構成条件のいずれかがTRUEである場合にTRUEを返します。条件の両方がFALSEである場合はFALSEを返します。そのいずれでもない場合、UNKNOWNを返します。

構文

expr operator condition1 { AND | OR } condition2 

5 < 7 AND 5 > 3 はTrue、5 < 3 OR 10 < 15はTrueです。

否定

NOT演算子は、条件の意味を逆転させます。条件がFALSEの場合はTRUEを返し、条件がTRUEの場合はFALSEを返します。UNKNOWNの場合はUNKNOWNのままです。

構文

NOT {BETWEEN | IN | LIKE | NULL }

5 IS NOT NULLはTrueで、5 NOT IN (5, 10, 15)はFalseです。

特殊条件

IS演算子は、NULL、無限大、数値以外の値などの特殊な条件をテストします。

特殊条件演算子
演算子 説明
IS INFINITE 式が無限の場合はTRUEを返し、無限でない場合はFALSEを返します。
IS NAN 式が数値でない場合はTRUEを返し、数値である場合はFALSEを返します。
IS NULL 式がNULLである場合はTRUEを返し、NULLでない場合はFALSEを返します。

構文

expr IS [ NOT ] NULL

13 IS NOT NULLはTrueです。

パターン一致条件

パターン一致条件は、文字データを比較します。このカテゴリには、LIKEREGEXP_LIKEの2つのグループの演算子があります。

LIKE演算子

LIKE演算子は、パターン一致を使用するテストを指定します。等号演算子(=)が1つの文字値と別の文字値を完全に一致させるのに対し、LIKE演算子では特殊パターン・マッチング(ワイルドカード)文字で定義されるパターンの一致が可能です。

次のLIKE演算子から選択できます。

LIKEパターン・マッチング演算子
演算子 説明
LIKE

入力キャラクタ・セットの文字を使用します。

LIKEC 完全なUnicodeキャラクタを使用します。Unicode補助文字を2文字として扱います。
LIKE2 UCS2コード・ポイントを使用します。Unicode補助文字を1文字として扱います。
LIKE4 UCS4コード・ポイントを使用します。複合文字を1文字として扱います。

構文

char1 [ NOT ] ( LIKE | LIKEC | LIKE2 | LIKE4 )
  char2 [ ESCAPE esc_char ]

引数

char1は、検索値のテキスト式です。

char2は、パターンのテキスト式です。パターンには、次のワイルドカード文字を含めることができます。

esc_charは、通常はリテラルの、1文字長のテキスト式です。このエスケープ・キャラクタは、パターンの中のアンダースコアやパーセント記号を、ワイルドカード文字ではなくリテラル文字として識別します。エスケープ文字を繰り返すことで、エスケープ文字自体を検索することもできます。たとえば、@がエスケープ文字である場合、@%を使用して%を検索し、@@を使用して@を検索できます。

'Ducks' LIKE 'Duck_'および'Ducky' LIKE 'Duck_'はTrueです。

'Duckling' LIKE 'Duck_'はFalseです。

'Duckling' LIKE 'Duck%'はTrueです。

REGEXP_LIKE演算子

REGEXP_LIKEは、単純なパターン一致を実行するLIKEとは異なり、正規表現一致を実行します。この演算子は、入力キャラクタ・セットによって定義された文字を使用して、文字列を評価します。

Oracleの正規表現は、IEEE Portable Operating System Interface(POSIX)正規表現規格、およびUnicode ConsortiumのUnicode Regular Expression Guidelinesに準拠します。正規表現の詳細は、Oracle Database SQLリファレンスを参照してください。

構文

REGEXP_LIKE(source_char, pattern
            [, match_parameter ]
           )

引数

source_charは、検索対象の文字式です。CHARVARCHAR2NCHARNVARCHAR2CLOBまたはNCLOBの任意のデータ型にできます。

patternは、検索する式です。通常はテキスト・リテラルであり、CHARVARCHAR2NCHARまたはNVARCHAR2の任意のデータ型にできます。最大512バイトを指定できます。

match_parameter: 関数のデフォルト照合動作を変更できるテキスト・リテラルです。次の1つ以上の値を指定できます。

REGEXP_LIKE (first_name, '^Ste(v|ph)en$')は、first_nameのStevenとStephenに一致しますが、StevensまたはEstevenには一致しません。