OceanBase 数据库支持常用的比较运算符。
比较运算符概览
OceanBase 数据库当前版本所支持的比较运算符的详细信息如下表所示。
| 运算符 | 操作数 | 含义 | NULL 参与运算时的结果 |
|---|---|---|---|
= | 二元 | 等于 | NULL |
<=> | 二元 | 安全等于 | 详见下方说明 |
<> / != | 二元 | 不等于 | NULL |
> | 二元 | 大于 | NULL |
>= | 二元 | 大于等于 | NULL |
< | 二元 | 小于 | NULL |
<= | 二元 | 小于等于 | NULL |
[NOT] IN | 二元 | 是否在集合中 | 详见下方说明 |
[NOT] BETWEEN AND | 三元 | 是否在区间内 | 详见下方说明 |
[NOT] LIKE | 三元 | 字符串通配符匹配 | 详见下方说明 |
IS [NOT] TRUE | 一元 | 是否等于 TRUE | TRUE 或 FALSE |
IS [NOT] FALSE | 一元 | 是否等于 FALSE | TRUE 或 FALSE |
IS [NOT] NULL | 一元 | 是否等于 NULL | TRUE 或 FALSE |
说明
比较运算的结果为 1 (TRUE)、0 (FALSE) 或 NULL。运算操作数适用于数字和字符串。根据需要,字符串会自动转换为数字,数字会自动转换为字符串。默认情况下,字符串比较不区分大小写并使用当前字符集。
以下为部分运算符的语法介绍以及当 NULL 参与运算时的结果说明。
<=>
对于安全等于 <=> ,当 NULL 参与运算时,如果两个操作数均为 NULL,则返回 1;如果一个操作数为 NULL,则返回 0。示例如下:
obclient> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
+---------+---------------+------------+
| 1 <=> 1 | NULL <=> NULL | 1 <=> NULL |
+---------+---------------+------------+
| 1 | 1 | 0 |
+---------+---------------+------------+
1 row in set
[NOT] IN
IN 语法如下:
expr IN (value,...)
NOT IN 语法等同于 NOT (expr IN (value,...)) 即 expr NOT IN (value,...)。
对于 IN 运算,如果 expr 等于 value,... 列表中的任何值,则返回 1 (TRUE),否则返回 0 (FALSE)。当 expr 为 NULL 时,结果为 NULL;当 expr 不为 NULL 且集合包含 NULL 时,如果集合中有非 NULL 值与 expr 相等,则结果为 TRUE,否则为 NULL。
不建议在 value,... 列表中混合带引号和不带引号的值,由于带引号的值(例如字符串)和不带引号的值(例如数字)的比较规则不同,混合类型可能会导致不一致的结果。
示例如下:
obclient> SELECT 1 IN (1, NULL), 1 IN (2, NULL);
+----------------+----------------+
| 1 IN (1, NULL) | 1 IN (2, NULL) |
+----------------+----------------+
| 1 | NULL |
+----------------+----------------+
1 row in set
[NOT] BETWEEN AND
BETWEEN AND 语法如下:
expr BETWEEN min AND max
NOT BETWEEN AND 语法等同于 NOT (expr BETWEEN min AND max) 即 expr NOT BETWEEN min AND max。
对于 BETWEEN AND 运算,如果 expr 大于或等于 min 且 expr 小于或等于 max,则 BETWEEN 返回 1,否则返回 0。如果所有参数都为同类型,等效于表达式 (min <= expr AND expr <= max)。
当 expr 为 NULL ,或者 min 和 max 都为 NULL 时,结果为 NULL。当 expr 不为 NULL,而且只有 min 或 max 为 NULL 时,如果只通过 expr 和 min/max 就能确定运算结果,则直接使用这个结果,否则返回 NULL。
示例如下:
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
[NOT] LIKE
LIKE 语法如下:
expr LIKE pat [ESCAPE 'escape_char']
NOT LIKE 语法等同于 NOT (expr LIKE pat [ESCAPE 'escape_char']) 即 expr NOT LIKE pat [ESCAPE 'escape_char']。
LIKE 用于字符串通配符匹配。结果返回 1 (TRUE) 或 0 (FALSE)。如果 expr 或 pat 为 NULL,则结果为 NULL。ESCAPE 用于定义转义符,如果 pat 中包含 escape_char,在匹配时 escape_char 后的字符将作为普通字符处理。
通配符包括如下两种:
%:匹配任意长度字符串。_:匹配单个字符。
示例如下:
obclient> SELECT 'ab%' LIKE 'abc%' ESCAPE 'c';
+------------------------------+
| 'ab%' LIKE 'abc%' ESCAPE 'c' |
+------------------------------+
| 1 |
+------------------------------+
1 row in set 



