全部产品
云市场

比较运算符

更新时间:2019-09-18 13:13:47

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

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