阅读(4314) (0)

OceanBase 比较运算符

2021-06-08 16:03:12 更新

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

运算符

操作数

含义

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。

    例如:

    obclient> SELECT 1 IN (1, NULL), 1 IN (2, NULL);
    +----------------+----------------+
    | 1 IN (1, NULL) | 1 IN (2, NULL) |
    +----------------+----------------+
    |              1 |           NULL |
    +----------------+----------------+
    1 row in set (0.01 sec)
    
    obclient> SELECT 1 BETWEEN 0 AND NULL, 1 BETWEEN 2 AND NULL;
    +----------------------+----------------------+
    | 1 BETWEEN 0 AND NULL | 1 BETWEEN 2 AND NULL |
    +----------------------+----------------------+
    |                 NULL |                    0 |
    +----------------------+----------------------+
    1 row in set (0.01 sec)