条件

条件指定一个或多个表达式和逻辑 (布尔) 运算符的组合。OLAP 表达式语法具有下列条件类型:

简单比较条件

比较条件将一个表达式与另一个表达式进行比较。这样比较的结果可能是 TRUEFALSENULL

可以使用下列比较运算符:

简单比较运算符
运算符
说明
>
大于
>=
大于或等于
<
小于
<=
小于或等于
=
等于

!=
^=

不等于
<>
大于或小于

语法

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

参数

expr 可以是任何表达式。

示例

5 > 3 为真,4 != 5 为真,6 >= 9 为假。

组比较条件

组比较条件指定与列表或子查询中的任何或所有成员进行比较。

可以使用下列比较运算符:

组比较运算符
运算符
说明
>
大于
>=
大于或等于
<
小于
<=
小于或等于
=
等于

!=
^=

不等于
<>
大于或小于

ANY
SOME

如果列表中的一个或多个值匹配,则返回真,如果没有任何值匹配,则返回假。
ALL
如果列表中的所有值都匹配,则返回真,如果一个或多个值不匹配,则返回假。

语法

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


示例

5 >= ALL (5, 10, 15) 为真,5 <> ANY (5, 10, 15) 为真。

(color, size) = SOME (('RED', 'L'), ('GREEN', 'M')) 对于大红和中绿项返回真。

范围条件

BETWEEN 运算符测试值是否在特定值范围内。如果测试的值大于或等于低值,并小于或等于高值,则返回真。

语法

expr [ NOT ] BETWEEN expr AND expr

示例

7 NOT BETWEEN 10 AND 15 为真。

多条件

关联将单个表达式与两个条件进行比较。

关联
运算符
说明
AND
如果两个组成条件都为 TRUE,则返回 TRUE。如果任一条件为 FALSE,则返回 FALSE。否则返回UNKNOWN
OR
如果任一组成条件为 TRUE,则返回 TRUE。如果两个条件都为 FALSE,则返回 FALSE。否则返回 UNKNOWN

语法

expr operator condition1 { AND | OR } condition2 

示例

5 < 7 AND 5 > 3 为真;5 < 3 OR 10 < 15 为真。

否定

NOT 运算符将条件的含义反向。如果条件为 FALSE,则返回 TRUE。如果条件为 TRUE,则返回 FALSE。如果条件为 UNKNOWN,则保持 UNKNOWN 不变。

语法

NOT {BETWEEN | IN | LIKE | NULL }

示例

5 IS NOT NULL 为真;5 NOT IN (5, 10, 15) 为假。

特殊条件

IS 运算符测试特殊条件,如空值、无穷大和非数字值。

特殊表件运算符
运算符 说明
IS INFINITE 如果表达式为无穷大,则返回 TRUE,否则返回 FALSE
IS NAN 如果表达式不是数字,则返回 TRUE,否则返回 FALSE
IS NULL 如果表达式为空值,则返回 TRUE,否则返回 FALSE

语法

expr IS [ NOT ] NULL

示例

13 IS NOT NULL 为真

模式匹配条件

模式匹配条件比较字符数据。此类别中包括两组运算符:LIKEREGEXP_LIKE

LIKE 运算符

LIKE 运算符指定涉及模式匹配的测试。不同于等于运算符 (=) 将一个字符值完全匹配到另一个字符值,LIKE 运算符可以匹配由特殊模式匹配 (“通配符”) 字符定义的模式。

可以从下列 LIKE 运算符中进行选择:

LIKE 模式匹配运算符
运算符 说明
LIKE

使用输入字符集中的字符

LIKEC 使用 Unicode 完全字符。它将 Unicode 补充字符作为两个字符。
LIKE2 使用 UCS2 代码点。它将 Unicode 补充字符作为一个字符。
LIKE4 使用 UCS4 代码点。它将组合字符作为一个字符。

语法

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

参数

char1 是搜索值的文本表达式。

char2 是模式的文本表达式。模式中可以包含下列通配符字符:

esc_char 是长度为一个字符的文本表达式,通常是文字。此转义符将模式中的下划线或百分号标识为文字字符而不是通配符字符。也可以通过重复转义符来搜索转义符自身。例如,如果 @ 是转义符,则可以使用 @% 搜索 %,使用 @@ 搜索 @。

示例

'Ducks' LIKE 'Duck_''Ducky' LIKE 'Duck_' 为真。

'Duckling' LIKE 'Duck_' 为假。

'Duckling' LIKE 'Duck%' 为真。

REGEXP_LIKE 运算符

REGEXP_LIKE 执行正则表达式匹配,而不是 LIKE 执行的简单模式匹配。此运算符使用由输入字符集定义的字符对字符串求值。

Oracle 正则表达式符合 IEEE 可移植操作系统接口 (POSIX) 正则表达式标准并符合 Unicode Consortium 的 Unicode 正则表达式准则。有关正则表达式的详细信息,请参阅 Oracle 数据库 SQL 参考

语法

REGEXP_LIKE(source_char, pattern
            [, match_parameter ]
           )

参数

source_char 是将要搜索的表达式。它可以是下列任何数据类型:CHARVARCHAR2NCHARNVARCHAR2CLOBNCLOB

pattern 是要搜索的表达式。它通常是文本文字,也可以是下列任何数据类型:CHARVARCHAR2NCHARNVARCHAR2。它最多可包含 512 个字节。

match_parameter 是一个文本文字,通过它您可以更改此函数的默认匹配行为。您可以指定一个或多个以下值:

示例

REGEXP_LIKE (first_name, '^Ste(v|ph)en$')first_name 中匹配 Steven 和 Stephen,而不匹配 Stevens 或 Esteven。