BIT_TEST
描述
将 <x>
的值转换为二进制的形式,返回指定位置 <bits>
的值, <bits>
从 0 开始,从右到左。
如果 <bits>
有多个值,则将多个 <bits>
位置上的值用与运算符结合起来,返回最终结果。
如果 <bits>
的取值为负数或者超过<x>
的 bit 位总数,则会返回结果为 0。
整数 <x>
范围:TINYINT、SMALLINT、INT、BIGINT、LARGEINT。
别名
- BIT_TEST_ALL
语法
BIT_TEST( <x>, <bits>[, <bits> ... ])
参数
<x>
<bits>
返回值
返回指定位置的值
举例
- 示例 1
select BIT_TEST(43, 1), BIT_TEST(43, -1), BIT_TEST(43, 2), BIT_TEST(43, 0, 1, 3, 5), BIT_TEST(43, 0, 1, 3, 5, 2);
+-----------------+------------------+-----------------+--------------------------+-----------------------------+
| BIT_TEST(43, 1) | BIT_TEST(43, -1) | BIT_TEST(43, 2) | BIT_TEST(43, 0, 1, 3, 5) | BIT_TEST(43, 0, 1, 3, 5, 2) |
+-----------------+------------------+-----------------+--------------------------+-----------------------------+
| 1 | 0 | 0 | 1 | 0 |
+-----------------+------------------+-----------------+--------------------------+-----------------------------+43 的二进制表示是 "101011",所以
BIT_TEST(43, 1)
的值是 1,BIT_TEST(43, 2)
的值是 0,BIT_TEST(43, 0, 1, 3, 5)
的值是 1。 而BIT_TEST(43, 0, 1, 3, 5, 2)
的值是 0。 - NULL 参数
select BIT_TEST(NULL, 1), BIT_TEST(43, NULL), BIT_TEST(NULL, NULL);
+-------------------+--------------------+----------------------+
| BIT_TEST(NULL, 1) | BIT_TEST(43, NULL) | BIT_TEST(NULL, NULL) |
+-------------------+--------------------+----------------------+
| NULL | NULL | NULL |
+-------------------+--------------------+----------------------+