Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » QAnywhere » QAnywhere 参考 » QAnywhere 传输和删除规则 » 规则语法

 

条件语法

QAnywhere 条件使用类似 SQL 的语法。将针对消息存储库中的消息对条件进行评测。条件的评测结果可以是 true、false 或 unknown。如果条件为空,则所有消息都视为满足条件。条件可用于传输规则、删除规则和 QAnywhere 编程 API。

关键字和字符串比较不区分大小写。

语法
condition :
expression IS [ NOT ] NULL
| expression compare expression
| expression [ NOT ] BETWEEN expression AND expression 
| expression [ NOT ] LIKE pattern [ ESCAPE character ]
| expression [ NOT ] IN ( string, ...  ) 
| NOT condition
| condition AND condition
| condition OR condition
| ( condition )
compare: = |> | < | >= | <= | <>
expression:
constant
| rule-variable
| -expression
| expression operator expression
| ( expression )
| rule-function ( expression, ... )
constant: integer | floating point number | string | boolean
integer: An integer in the range -2**63 to 2**63-1.
floating point number: A number in scientific notation in the range 2.2250738585072e-308 to 1.79769313486231e+308.
string: A sequence of characters enclosed in single quotes. A single quote in a string is represented by two consecutive single quotes.
boolean: A statement that is TRUE or FALSE, T or F, Y or N, 1 or 0.
operator: + | - | * | /
rule-variable: 

请参见规则变量

rule-function: 

请参见规则函数

参数
  • BETWEEN   BETWEEN 条件的评测结果可以是 true、false 或 unknown。在没有 NOT 关键字的情况下,如果 expression 大于等于开始表达式且小于等于结束表达式,则条件的评测结果为 true。

    NOT 关键字会使条件的含义相反,但对于 UNKNOWN,其含义保持不变。

    BETWEEN 条件相当于两个不等式的组合:

    [ NOT ] ( expression >= start-expression AND arithmetic-expression <= end-expr )
    

    例如:

    • age BETWEEN 15 AND 19 等效于 age >=15 AND age <= 19

    • age NOT BETWEEN 15 AND 19 等效于 age < 15 OR age > 19

  • IN   IN 条件是按照下面的规则计算的:

    • 如果 expression 不为空值且至少等于列表中的一个值,则返回 true。

    • 如果 expression 为空值而值列表非空,或者如果至少其中一个值为空值且表达式不等于任何其它值,则返回 unknown。

    • 如果没有值为空值,且 expression 不等于列表中的任何值,则返回 false。

    使用 NOT 关键字将使 true 与 false 相互转换。

    例如:

    • Country IN ( 'UK', 'US', 'France' ) 对于 'UK' 为真而对于 'Peru' 为假。它等效于以下语句:

      ( Country = 'UK' )       \
      OR ( Country = 'US' )    \
      OR ( Country = 'France' )
    • Country NOT IN ( 'UK', 'US', 'France' ) 对于 'UK' 为假而对于 'Peru' 为真。它等效于以下语句:

      NOT ( ( Country = 'UK' )         \
            OR ( Country = 'US' )      \
            OR ( Country = 'France' ) )

  • LIKE   LIKE 条件的值可以是 true、false 或 unknown。

    无关键字 NOT 时,如果 expressionlike expression 匹配,则条件的评测结果为 true。如果 expressionlike expression 中有一个值为空值,则此条件为 unknown。

    NOT 关键字会使条件的含义相反,但对于 UNKNOWN,其含义保持不变。

    like expression 可包含任意数目的通配符。通配符包括:

    通配符 匹配项
    _(下划线) 任意一个字符
    %(百分号) 包含零个或多个字符的任意字符串

    例如:

    • phone LIKE 12%3 对于 '123''12993' 为真而对于 '1234' 为假

    • word LIKE 's_d' 对于 'sad' 为真而对于 'said' 为假

    • phone NOT LIKE '12%3' 对于 '123''12993' 为假而对于 '1234' 为真

  • ESCAPE CHARACTER   ESCAPE CHARACTER 是单字符的字符串文字,其字符用于在 pattern 中将通配符字符(_%)的特殊含义进行转义。例如:

    • underscored LIKE '\_%' ESCAPE '\' 对于 '_myvar' 为真而对于 'myvar' 为假。

  • IS NULL   如果 rule-variable 为 unknown,则 IS NULL 条件的评测结果为 true;否则为 false。NOT 关键字使条件的含义相反。此条件的评测结果不能为 unknown。