支持标准 SQL 比较运算符 >、<、>=、<=、= 和 <> 用于比较 ESQL 中的两个值。
当两个值的数据类型不相同时,它们中的一个可隐式地强制类型转换为其他类型以允许比较继续。在下表中,垂直轴表示左手操作数,水平轴表示右手操作数。
ukn | bln | int | float | dec | char | time | gtm | date | ts | gts | ivl | blob | bit | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ukn | ||||||||||||||
bln | X | L | ||||||||||||
int | X | R | R | L | ||||||||||
float | L | X | L | L | ||||||||||
dec | L | R | X | L | ||||||||||
chr | R | R | R | R | X | R | R | R | R | R | R1 | R | R | |
tm | L | X | L | |||||||||||
gtm | L | R | X | |||||||||||
dt | L | X | R2 | R2 | ||||||||||
ts | L | L2 | X | L | ||||||||||
gts | L | L2 | R | X | ||||||||||
ivl | L1 | X | ||||||||||||
blb | L | X | ||||||||||||
bit | L | X | ||||||||||||
注:
|
依照 Gregorian 日历和时钟的自然规则来比较日期时间值。
您可以将您工作所在的时区与 GMT 时区比较。根据您的本地时区和指定的 GMT 时间之间的时区差异,将 GMT 时区转换为本地时区。将您的本地时区与 GMT 时间相比较时,此比较基于给定日期内给定时间的差异。
转换总是基于 LOCAL_TIMEZONE 的值。这是因为只有在可以明确转换时,GMT 时间戳记才转换为本地时间戳记。将本地时间戳记转换为 GMT 时间戳记在夏时制转换时中有困难,必须基于 LOCAL_TIMEZONE 值执行时间和 GMT 时间(不带日期信息)之间的转换,因为您无法指定使用的时区差异。
将两个间隔值转换为中间表示来比较间隔,以便两个间隔具有相同的间隔限定符。年-月时间间隔只能与其他年-月时间间隔比较,天-秒时间间隔只能与其他天秒时间间隔比较。
例如,如果一个以分钟为单位的时间间隔(如 INTERVAL '120' MINUTE)与以天到秒为单位的时间间隔(如 INTERVAL '0 02:01:00')进行比较,则两个时间间隔首先转换成可比较的、具有一致的时间间隔限定符的值。 因此,在此示例中,第一个值转换成以天到秒为单位的时间间隔,它给出 INTERVAL '0 02:00:00',可与第二个值进行比较。
如果字符串与另一种类型的值比较,则 WebSphere Message Broker 尝试将字符串数据类型强制转换为与其他值数据类型相同的值。
'1234' > 4567
Body.Trade.Quantity > 5000
在此示例中,左边的字段引用求值为字符串 1000 并且,因为它正在与一个整数比较,所以该字符串在发生比较之前转换为一个整数。
您必须还要检查您想解释为一个十进制数的价格字段是否大于给定的阈值。确保进行比较的文字是一个十进制数值而不是整数。
Body.Trade.Price > 100
Body.Trade.Price > 100.00