条件は、1つ以上の式および論理(ブール)演算子の組合せを指定したものです。OLAP式構文には、次のタイプの条件があります。
比較条件は、1つの式と別の式を比較します。このような比較の結果は、True、FalseまたはNULLになります。
次の比較演算子を使用できます。
演算子 |
説明 |
|---|---|
> |
より大きい |
>= |
以上 |
< |
未満 |
<= |
以下 |
= |
等しい |
|
等しくない |
<> |
より大きい、またはより小さい |
expr { > | >= | < | <= | = | != | ^= | <> } expr
exprは、任意の式にできます。
5 > 3はTrue、4 != 5はTrue、6 >= 9はFalseです。
グループ比較条件は、リストまたは副問合せの任意あるいはすべてのメンバーとの比較を指定します。
次の比較演算子を使用できます。
演算子 |
説明 |
|---|---|
> |
より大きい |
>= |
以上 |
< |
未満 |
<= |
以下 |
= |
等しい |
|
等しくない |
<> |
より大きい、またはより小さい |
|
リストの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です。
パターン一致条件は、文字データを比較します。このカテゴリには、LIKEとREGEXP_LIKEの2つのグループの演算子があります。
LIKE演算子は、パターン一致を使用するテストを指定します。等号演算子(=)が1つの文字値と別の文字値を完全に一致させるのに対し、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は、パターンのテキスト式です。パターンには、次のワイルドカード文字を含めることができます。
アンダースコア(_)は、値の中の1文字(マルチバイトのキャラクタ・セットでの1バイトとは異なる)に完全に一致します。
パーセント記号(%)は、値の中の0(ゼロ)以上の文字(マルチバイトのキャラクタ・セットでのバイトとは異なる)と一致します。「%」は、NULLには一致しません。
esc_charは、通常はリテラルの、1文字長のテキスト式です。このエスケープ・キャラクタは、パターンの中のアンダースコアやパーセント記号を、ワイルドカード文字ではなくリテラル文字として識別します。エスケープ文字を繰り返すことで、エスケープ文字自体を検索することもできます。たとえば、@がエスケープ文字である場合、@%を使用して%を検索し、@@を使用して@を検索できます。
'Ducks' LIKE 'Duck_'および'Ducky' LIKE 'Duck_'はTrueです。
'Duckling' LIKE 'Duck_'はFalseです。
'Duckling' LIKE 'Duck%'はTrueです。
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は、検索対象の文字式です。CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOBまたはNCLOBの任意のデータ型にできます。
patternは、検索する式です。通常はテキスト・リテラルであり、CHAR、VARCHAR2、NCHARまたはNVARCHAR2の任意のデータ型にできます。最大512バイトを指定できます。
match_parameter: 関数のデフォルト照合動作を変更できるテキスト・リテラルです。次の1つ以上の値を指定できます。
c: 照合で大文字と小文字を区別します。
i: 照合で大文字と小文字を区別しません。
m: ソース文字列を複数行とみなします。REGEXP_LIKEは、^および$をソース文字列全体の最初または最後としてだけではなく、ソース文字列における任意の行の、それぞれ最初および最後として解釈します。デフォルトでは、REGEXP_LIKEはソース文字列を1行とみなします。
n: ピリオド(ワイルドカード文字)が一致する文字に改行文字を含めます。デフォルトでは、改行文字は含まれません。
x: 空白を無視します。
REGEXP_LIKE (first_name, '^Ste(v|ph)en$')は、first_nameのStevenとStephenに一致しますが、StevensまたはEstevenには一致しません。
Copyright (C) 2003, 2007, Oracle. All rights reserved.