z arithmetic〆xp1 'NOT' BETWEEN arithmetic〆xp2 AND arithmetic〆xp3(比较操作) “age BETWEEN 15 AND 19”等价于”age 》= 15 AND age 2500” 26 / 66 …………………………………………………………Page 27…………………………………………………………… 3。8。1。2 Null 值 如上所述,头字段和属性值都可以是NULL。包含NULL 值的选择器表达式的计算由SQL 92 NULL 语义定义。这里提供了这些语义的简要描述。 SQL 认为NULL 值是未知值。用未知值比较或运算仍然是未知的。 IS NULL 和IS NOT NULL 操作符将未知的头或属性值分别转换成TRUE 或FALSE 值。 布尔操作符使用下表定义的三值逻辑: 表3? AND 操作符的定义 AND T F U T T F U F F F F U U F U 表3? OR 操作的定义 OR T F U T T T T F T F U U T U U 表3? NOT 操作的定义 NOT T F F T U U 3。8。1。3 特别注意 当在消息选择器中使用 JMSDeliveryMode 时,它被看作值是’PERSISTENT’ 和’NON_PERSISTENT’ 。 日期和时间值应当使用标准的Java long 毫秒值。当消息选择器中包含日期或时间文法 时,它的值应当是整型的。产生毫秒值得标准方式是使用java。util。Calendar 。 尽管 SQL 支持固定小数比较和算术运算,但JMS 消息选择器不支持。这是因为精确数 值是不能有小数的(而且,带小数的数值的加法是作为近似数值的备选呈现方式)。 不支持SQL 注释。 3。9 访问已发送的消息 在发送消息后,客户端可以保留和更改这个消息,但不影响已发送的消息。同一个消息 对象可以被多次发送。 在发送方法执行时,消息不能被客户端修改。如果修改了,则没有定义发送的结果是什 么。 27 / 66 …………………………………………………………Page 28…………………………………………………………… 3。10 改变收到的消息的值 当接收到消息时,可以改变消息的头字段;但是他的属性和消息体是只读的,正如本章 所述。 限制只读是因为为了给 JMS 提供商在如何实现管理接收到的消息方面更多的自由。例 如,它们可以返回一个消息对象,这个对象引用位于内部消息缓冲区的属性条目和消息体的 值,而不需要返回一个拷贝。 在调研 clearBody 或clearProperties 方法使得消息体或属性可写后,消费者可以修改接 收到的消息。如果消费者更改了接收到的消息,且消息随后被转发,那么转发的消息必须是 原始的没有被改变的消息(除了被 JMS 提供商为转发而更改的头和属性外,例如 JMSRedilvered 头和JMSXDeliveryCount 属性)。 3。11 JMS 消息体 JMS 提供了五种形式的消息体。每种形式都由一个消息接口来定义: z StreamMessage——消息体包含的是java 原始值流。它连续的填充和读。 z MapMessage——消息体包含一系列名字┲刀远渲忻质荢tring,值是Java 原 始类型。条目可以被枚举器连续获取也可以按名字随机获取。条目的顺序没有定义。 z TextMessage——消息体