跳到主要内容

BIT_AND

声明

BIT_AND(expr)

说明

返回 expr 中所有位的按位与。

结果类型取决于函数参数值被评估为二进制字符串还是数字。当参数值具有二进制字符串类型,并且参数不是十六进制字面量、Bit 字面量或 NULL 字面量时,就会发生二进制字符串求值。否则会发生数值计算,必要时将参数值转换为无符号 64 位整数。

如果没有匹配的行,BIT_AND() 返回一个与参数值长度相同的中性值(所有位都设置为 1)。

除非所有值都为 NULL,否则 NULL 值不会影响结果。在这种情况下,结果是一个与参数值具有相同长度的中性值。

示例

CREATE TABLE product_information(supplier_id INT, product_id INT,list_price numeric, min_price numeric);
INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '1659', '45', NULL);
INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '1770', NULL, '70');
INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '2370', '305', '247');
INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '2380', '750', '731');
INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '3255', NULL, NULL);
INSERT INTO PRODUCT_INFORMATION VALUES ('102050', '1659', '35', NULL);

SELECT * FROM product_information;
+-------------+------------+------------+-----------+
| supplier_id | product_id | list_price | min_price |
+-------------+------------+------------+-----------+
| 102050 | 1659 | 45 | NULL |
| 102050 | 1770 | NULL | 70 |
| 102050 | 2370 | 305 | 247 |
| 102050 | 2380 | 750 | 731 |
| 102050 | 3255 | NULL | NULL |
| 102050 | 2380 | 750 | 731 |
| 102050 | 1659 | 35 | NULL |
+-------------+------------+------------+-----------+
7 rows in set (0.003 sec)

SELECT product_id, BIT_AND(list_price) BITS FROM product_information GROUP BY product_id;
+------------+----------------------+
| product_id | BITS |
+------------+----------------------+
| 1659 | 33 |
| 1770 | 18446744073709551615 |
| 2370 | 305 |
| 2380 | 750 |
| 3255 | 18446744073709551615 |
+------------+----------------------+
5 rows in set (0.002 sec)