ESQL 复杂比较运算符

本主题描述了 ESQL 的复杂比较运算符(谓词)。有关 ESQL 的简单比较运算符的信息,请参阅 ESQL 简单比较运算符

运算符 BETWEEN
运算符 BETWEEN 用于测试一个值是否在两个边界值之间。

此运算符有两种格式:SYMMETRIC 和 ASYMMETRIC(如果未指定任何格式,则使用它们作为缺省值)。SYMMETRIC 格式相当于:

(source >= boundary1 AND source <= boundary2) OR
(source >= boundary2 AND source <= boundary1)

ASYMMETRIC 格式相当于:

source >= boundary1 AND source <= boundary2

ASYMMETRIC 格式比较简单,但是仅当第一个边界值小于第二个边界值时才返回您期望的结果。仅当边界条件表达式是文字表达式时,它才有用。

如果操作数的类型不同,则应用特殊规则。隐式类型强制转换中有关于这些规则的描述。

运算符 EXISTS
运算符 EXISTS 返回布尔值,指出 SELECT 函数返回一个值、多个值(TRUE)还是不返回任何值(FALSE)。
EXISTS(SELECT * FROM something WHERE predicate)
运算符 IN
运算符 IN 用于测试一个值是否等于值列表中的某个值。

如果左操作数不为 NULL,并且等于右操作数中的一个,结果为 TRUE。如果左、右操作数均不为 NULL,并且左操作数不等于右操作数中的任何一个,则结果为 FALSE。否则,结果为 UNKNOWN。如果操作数的类型不同,则应用特殊规则。隐式类型强制转换中有关于这些规则的描述。

运算符 IS
运算符 IS 用于测试表达式是否返回了特殊值。

运算符 IS 的主要用途是测试一个值是否为 NULL。比较运算符(=)不允许这样,因为将任何值与 NULL 比较结果都是 NULL。

IS 还用于测试布尔值 TRUE 和 FALSE,以及特殊值的十进制值。这些特殊值用 INF、+INF、-INF、NAN(不是数字)和 NUM(有效数字)的任何大小写组合表示。另外还接受其他格式如 +INFINITY、-INFINITY 和 NUMBER。

如果应用于非数字类型,则结果为 FALSE。

运算符 LIKE
运算符 LIKE 搜索与某个特定模式匹配的字符串。

如果任何操作数均不为 NULL 并且 source 操作数与 pattern 操作数匹配,则结果为 TRUE。如果任何操作数均不为 NULL 并且 source 操作数与 operand 操作数不匹配,则结果为 FALSE。否则,结果为 UNKNOWN。

pattern 用字符串指定,其中可以使用具有特殊含义的百分号(%)和下划线(_)字符:

  • 下划线字符“_”可以与任何单个字符匹配。
    例如,下面的语句查找与 IBM 和 IGI 匹配的内容,而不是与 InternationalBusiness Machines 或 IBM Corp 匹配的内容:
    Body.Trade.Company LIKE 'I__'
  • 百分号字符 % 与包含零个或多个字符的字符串匹配。
    例如,下面的语句查找与 IBM、IGI、International Business Machines 和 IBM Corp 匹配的内容:
    Body.Trade.Company LIKE 'I%'

要在被匹配的表达式中使用百分号和下划线字符,必须在这些字符前使用转义字符,其缺省值为反斜杠(\)字符。

例如,下面的谓词查找与 IBM_Corp 匹配的内容。

Body.Trade.Company LIKE 'IBM\_Corp'

您可以使用 ESCAPE 子句指定其他转义字符。例如,您还可以如下所示指定上面的示例:

Body.Trade.Company LIKE 'IBM$_Corp' ESCAPE '$'
运算符 SINGULAR
如果列表只有一个元素,则运算符 SINGULAR 返回一个布尔值 TRUE,否则返回 FALSE。
相关概念
消息流概述
消息映射概述
相关任务
开发消息流
正在开发 ESQL
相关参考
ESQL 简单比较运算符
内置节点
ESQL 引用
ROW 和 LIST 比较
隐式类型强制转换
声明 | 商标 | 下载 | | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后更新:2006/05/19
ak01045_