条件指定一个或多个表达式和逻辑 (布尔) 运算符的组合。OLAP 表达式语法具有下列条件类型:
比较条件将一个表达式与另一个表达式进行比较。这样比较的结果可能是 TRUE、FALSE 或 NULL。
可以使用下列比较运算符:
运算符 |
说明 |
|---|---|
> |
大于 |
>= |
大于或等于 |
< |
小于 |
<= |
小于或等于 |
= |
等于 |
|
不等于 |
<> |
大于或小于 |
expr { > | >= | < | <= | = | != | ^= | <> } expr
expr 可以是任何表达式。
5 > 3 为真,4 != 5 为真,6 >= 9 为假。
组比较条件指定与列表或子查询中的任何或所有成员进行比较。
可以使用下列比较运算符:
运算符 |
说明 |
|---|---|
> |
大于 |
>= |
大于或等于 |
< |
小于 |
<= |
小于或等于 |
= |
等于 |
|
不等于 |
<> |
大于或小于 |
|
如果列表中的一个或多个值匹配,则返回真,如果没有任何值匹配,则返回假。 |
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 为真
模式匹配条件比较字符数据。此类别中包括两组运算符:LIKE 和 REGEXP_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 执行正则表达式匹配,而不是 LIKE 执行的简单模式匹配。此运算符使用由输入字符集定义的字符对字符串求值。
Oracle 正则表达式符合 IEEE 可移植操作系统接口 (POSIX) 正则表达式标准并符合 Unicode Consortium 的 Unicode 正则表达式准则。有关正则表达式的详细信息,请参阅 Oracle 数据库 SQL 参考。
REGEXP_LIKE(source_char, pattern
[, match_parameter ]
)
source_char 是将要搜索的表达式。它可以是下列任何数据类型:CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB 或 NCLOB。
pattern 是要搜索的表达式。它通常是文本文字,也可以是下列任何数据类型:CHAR、VARCHAR2、NCHAR 或 NVARCHAR2。它最多可包含 512 个字节。
match_parameter 是一个文本文字,通过它您可以更改此函数的默认匹配行为。您可以指定一个或多个以下值:
c:区分大小写匹配。
i:不区分大小写匹配。
m:将源字符串作为多行。REGEXP_LIKE 将 ^ 和 $ 分别作为源字符串中任何位置的任何行的开始和结束,而不只是整个源字符串的开始和结束。默认情况下,REGEXP_LIKE 将源字符串作为一行。
n:新行字符属于句点 (通配符) 可以匹配的字符。默认情况下,不属于这种字符。
x:忽略空格字符。
REGEXP_LIKE (first_name, '^Ste(v|ph)en$') 在 first_name 中匹配 Steven 和 Stephen,而不匹配 Stevens 或 Esteven。
版权所有 © 2003,2007,Oracle。保留所有权利。