BIT_OR
声明
BIT_OR(expr) OVER (analytic_clause)
说明
返回 expr 中所有位的按位或。
结果类型取决于函数参数值被评估为二进制字符串还是数字。当参数值具有二进制字符串类型,并且参数不是十六进制字面量、Bit 字面量或 NULL 字面量时,就会发生二进制字符串求值;否则会发生数值计算,必要时将参数值转换为无符号 64 位整数。
如果没有匹配的行,BIT_OR() 返回一个与参数值长度相同的中性值(所有位都设置为 0)。除非所有值都为 NULL,否则 NULL 值不会影响结果。在这种情况下,结果是一个与参数值具有相同长度的中性值。
示例
CREATE TABLE tbl1 (year YEAR (4), month INT(2)UNSIGNED ZEROFILL, day INT(2) UNSIGNED ZEROFILL);
INSERT INTO tbl1 VALUES(2021,1,1),(2021,1,22),(2021,1,3),(2021,2,2), (2021,2,23),(2021,2,23);
SELECT * FROM tbl1;
+------+-------+------+
| year | month | day |
+------+-------+------+
| 2021 | 01 | 01 |
| 2021 | 01 | 22 |
| 2021 | 01 | 03 |
| 2021 | 02 | 02 |
| 2021 | 02 | 23 |
| 2021 | 02 | 23 |
+------+-------+------+
6 rows in set (0.002 sec)
SELECT year,month,BIT_OR(day) OVER (PARTITION BY year, month) AS days FROM tbl1;
+------+-------+------+
| year | month | days |
+------+-------+------+
| 2021 | 01 | 23 |
| 2021 | 01 | 23 |
| 2021 | 01 | 23 |
| 2021 | 02 | 23 |
| 2021 | 02 | 23 |
| 2021 | 02 | 23 |
+------+-------+------+
6 rows in set (0.002 sec)