以下为所有比较运算符列表:

    运算符

    操作数

    含义

    NULL参与运算

    =

    二元

    等于。

    结果为NULL。

    <>/!=

    二元

    不等于。

    结果为NULL。

    >

    二元

    大于。

    结果为NULL。

    >=

    二元

    大于等于。

    结果为NULL。

    <

    二元

    小于。

    结果为NULL。

    <=

    二元

    小于等于。

    结果为NULL。

    [NOT] IN

    二元

    是否在集合中。

    详见说明。

    [NOT] BETWEEN AND

    三元

    是否在区间内。

    详见说明。

    IS [NOT] TRUE

    一元

    是否等于TRUE。

    结果为TRUE或FALSE。

    IS [NOT] FALSE

    一元

    是否等于FALSE。

    结果为TRUE或FALSE。

    IS [NOT] NULL

    一元

    是否等于NULL。

    结果为TRUE或FALSE。

    <=>

    二元

    安全等于。

    结果为TRUE或FALSE。

    以下为部分运算符对NULL的特殊处理:

    • value [NOT] IN ()

    • value为NULL时,结果为NULL。

    • value不为NULL、且集合包含NULL时,如果集合中有非NULL值与value相等,则结果为TRUE,否则为NULL。

    • value [NOT] BETWEEN lower AND upper

    • value为NULL、或lower和upper都为NULL时,结果为NULL。

    • value不为NULL、且只有lower/upper为NULL时,如果只通过value和lower/upper就能确定运算结果,则直接使用这个结果,否则返回NULL。

    例如:

    1. OceanBase (root@oceanbase)> SELECT 1 IN (1, NULL), 1 IN (2, NULL);
    2. +----------------+----------------+
    3. | 1 IN (1, NULL) | 1 IN (2, NULL) |
    4. +----------------+----------------+
    5. | 1 | NULL |
    6. +----------------+----------------+
    7. 1 row in set (0.01 sec)
    8. OceanBase (root@oceanbase)> SELECT 1 BETWEEN 0 AND NULL, 1 BETWEEN 2 AND NULL;
    9. +----------------------+----------------------+
    10. | 1 BETWEEN 0 AND NULL | 1 BETWEEN 2 AND NULL |
    11. +----------------------+----------------------+
    12. | NULL | 0 |
    13. +----------------------+----------------------+
    14. 1 row in set (0.01 sec)