BIT_AND

采用所有非空输入值的按位 AND。如果输入参数为 NULL,那么返回值也将为 NULL。

行为类型

不可变

语法

BIT_AND ( expression )

参数

表达式
要求值的 BINARY 或 VARBINARY 输入值。BIT_AND 以显式方式对 VARBINARY 类型进行操作,并通过 casts 以隐式方式对 BINARY 类型进行操作。

返回

BIT_AND 返回:

  • 与实参数据类型相同的值。

  • 1 — 对于比较的每个位,如果所有位为 1,否则为 0。

如果列具有不同长度,那么处理这些这些返回值时,会将其当作长度相同且使用零字节向右扩展的值。例如,假设组中包含十六进制值 ffnullfBIT_AND 将忽略 null 值并将值 f 扩展为 f0

示例

示例使用 t 表,该表在单个列中包含了 VARBINARY 数据类型:

=> CREATE TABLE t ( c VARBINARY(2) );
=> INSERT INTO t values(HEX_TO_BINARY('0xFF00'));
=> INSERT INTO t values(HEX_TO_BINARY('0xFFFF'));
=> INSERT INTO t values(HEX_TO_BINARY('0xF00F'));

查询表 t 以查看列 c 输出:

=> SELECT TO_HEX(c) FROM t;
 TO_HEX
--------
 ff00
 ffff
 f00f
(3 rows)

查询表 t 以获取列 c 的 AND 值:

=> SELECT TO_HEX(BIT_AND(c)) FROM t;
 TO_HEX
--------
 f000
(1 row)

该函数将成对应用于组中的所有值,由此导致 f000,具体由以下条件确定:

  1. ff00 (记录 1)与 ffff(记录 2)进行比较,得到 ff00

  2. 从上一比较中得到的结果与 f00f(记录 3)进行比较,得到 f000

另请参阅

二进制数据类型(BINARY 和 VARBINARY)