类别:

按位表达式函数

BITAND

返回两个数值表达式按位进行 AND 运算的值。

别名:

BIT_AND

另请参阅:

BITAND_AGG

语法

BITAND( <expr1> , <expr2> )
Copy

实参

expr1

此表达式的计算结果必须是可以转换为 INTEGER 的数据类型。

expr2

此表达式的计算结果必须是可以转换为 INTEGER 的数据类型。

返回

返回一个整数,它表示对输入表达式按位进行 AND 运算的值。

使用说明

  • 如果任一实参的数据类型是数字,但不是 INTEGER (例如 FLOAT、DECIMAL 等),则该实参将转换为 INTEGER

  • 如果任一实参的数据类型是字符串(例如 VARCHAR),则该实参将尽可能转换为 INTEGER。例如,字符串“12.3”将转换为 12。如果该值无法转换为 INTEGER,则该值被视为 NULL。

  • 如果任一值为 NULL,则结果为 NULL。

示例

此示例说明如何使用 BITAND()BITOR()BITXOR()

创建简单的表和数据:

CREATE TABLE bits (ID INTEGER, bit1 INTEGER, bit2 INTEGER);
Copy
INSERT INTO bits (ID, bit1, bit2) VALUES 
    (   11,    1,     1),    -- Bits are all the same.
    (   24,    2,     4),    -- Bits are all different.
    (   42,    4,     2),    -- Bits are all different.
    ( 1624,   16,    24),    -- Bits overlap.
    (65504,    0, 65504),    -- Lots of bits (all but the low 6 bits)
    (    0, NULL,  NULL)     -- No bits
    ;
Copy

执行查询:

SELECT bit1, bit2, BITAND(bit1, bit2), BITOR(bit1, bit2), BITXOR(bit1, BIT2)
  FROM bits
  ORDER BY bit1;
Copy

输出:

+------+-------+--------------------+-------------------+--------------------+
| BIT1 |  BIT2 | BITAND(BIT1, BIT2) | BITOR(BIT1, BIT2) | BITXOR(BIT1, BIT2) |
|------+-------+--------------------+-------------------+--------------------|
|    0 | 65504 |                  0 |             65504 |              65504 |
|    1 |     1 |                  1 |                 1 |                  0 |
|    2 |     4 |                  0 |                 6 |                  6 |
|    4 |     2 |                  0 |                 6 |                  6 |
|   16 |    24 |                 16 |                24 |                  8 |
| NULL |  NULL |               NULL |              NULL |               NULL |
+------+-------+--------------------+-------------------+--------------------+
Copy
语言: 中文