暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

OceanBase SQL语句比较运算符

2024-05-03
481

OceanBase 数据库支持常用的比较运算符。

比较运算符概览

OceanBase 数据库当前版本所支持的比较运算符的详细信息如下表所示。

运算符操作数含义NULL 参与运算时的结果
=二元等于NULL
<=>二元安全等于详见下方说明
<> / !=二元不等于NULL
>二元大于NULL
>=二元大于等于NULL
<二元小于NULL
<=二元小于等于NULL
[NOT] IN二元是否在集合中详见下方说明
[NOT] BETWEEN AND三元是否在区间内详见下方说明
[NOT] LIKE三元字符串通配符匹配详见下方说明
IS [NOT] TRUE一元是否等于 TRUETRUE 或 FALSE
IS [NOT] FALSE一元是否等于 FALSETRUE 或 FALSE
IS [NOT] NULL一元是否等于 NULLTRUE 或 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,则结果为 NULLESCAPE 用于定义转义符,如果 pat 中包含 escape_char,在匹配时 escape_char 后的字符将作为普通字符处理。

通配符包括如下两种:

  • %:匹配任意长度字符串。

  • _:匹配单个字符。

示例如下:

obclient> SELECT 'ab%' LIKE 'abc%' ESCAPE 'c';
+------------------------------+
| 'ab%' LIKE 'abc%' ESCAPE 'c' |
+------------------------------+
|                            1 |
+------------------------------+
1 row in set 
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论