跳到主要内容

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. 示例 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。

  2. 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 |
    +-------------------+--------------------+----------------------+