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

OceanBase SQL语句位运算符

2024-05-02
387

OceanBase 数据库支持常用的位运算符。位运算使用 BIGINT UNSIGNED 计算,不需考虑符号位。

位运算符概览

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

运算符操作数类型含义
&二元按位与
|二元按位或
~一元按位取反
^二元按位异或
<<二元逻辑左移
>>二元逻辑右移

说明

按位与 &

两个操作数的二进制位都为 1 时,结果才为 1。结果是一个无符号的 64 位整数。

示例如下:

obclient> SELECT 28 & 15;
+---------+
| 28 & 15 |
+---------+
|      12 |
+---------+
1 row in set 

按位或 |

两个操作数的二进制位都为 0 时,结果才为 0。结果是一个无符号的 64 位整数。

示例如下:

obclient>  SELECT 28 | 15;
+---------+
| 28 | 15 |
+---------+
|      31 |
+---------+
1 row in set 

按位取反 ~

二进制位上 0 变为 1,1 变为 0。结果是一个无符号的 64 位整数。

示例如下:

obclient> SELECT 5 & ~1;
+--------+
| 5 & ~1 |
+--------+
|      4 |
+--------+
1 row in set 

按位异或 ^

两个操作数的二进制位相同为 0,相异为 1。结果是一个无符号的 64 位整数。

示例如下:

obclient> SELECT 1 ^ 1;
+-------+
| 1 ^ 1 |
+-------+
|     0 |
+-------+
1 row in set 

obclient> SELECT 1 ^ 0;
+-------+
| 1 ^ 0 |
+-------+
|     1 |
+-------+
1 row in set 

obclient> SELECT 13 ^ 5;
+--------+
| 13 ^ 5 |
+--------+
|      8 |
+--------+
1 row in set 

逻辑左移 <<

两个操作数的二进制位全部左移若干位,高位丢弃,低位补 0。结果是一个无符号的 64 位整数。该值被截断为 64 位。如果移位计数大于或等于无符号 64 位数字的宽度,则结果为零。

如下示例为将 1 (00000001) 左移 2 位,右补 0,即得 4(00000100)。

obclient> SELECT 1 << 2;
+--------+
| 1 << 2 |
+--------+
|      4 |
+--------+
1 row in set 

逻辑右移 >>

两个操作数的二进制位全部右移若干位。对无符号数,高位补 0。结果是一个无符号的 64 位整数。该值被截断为 64 位。如果移位计数大于或等于无符号 64 位数字的宽度,则结果为零。

如下示例为将 4(00000100)右移 2 位,左补 0,即得 1 (00000001)。

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

评论