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

    运算符

    操作数

    含义

    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、或 lowerupper 都为 NULL 时,结果为 NULL。

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

    例如:

    1. obclient> 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. obclient> 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)