所有比较运算符如下表所示。

    运算符操作数含义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)