📜  MySQL 中的 BIT_COUNT()函数

📅  最后修改于: 2022-05-13 01:55:49.954000             🧑  作者: Mango

MySQL 中的 BIT_COUNT()函数

MySQL 中的BIT_COUNT ()函数用于返回给定输入中活动的位数。活动位可以被计算为二进制数中的 1 数。

句法 :

BIT_COUNT(number)

参数:此方法只接受一个参数。

  • 数字 -
    输入我们要计算其活动位数的整数。

返回:它返回数字中设置的活动位的数量。

示例-1:
使用 BIT_COUNT函数查找数字 0 的活动位数。由于给定输入的等效二进制数为 0,因此等效二进制数中 1 的个数也是 0。因此,这里我们将得到 0 个有效位。

SELECT BIT_COUNT(0) AS ActiveBits;

输出 :

ACTIVEBITS
0

示例 2 :
使用 BIT_COUNT函数查找数字 14 的活动位数。我们知道 14 的等效二进制表示是 1110。在这里我们可以看到 1 的数量是 3。所以,结果将是 3。

SELECT BIT_COUNT(14) AS ActiveBits;

输出 :

ACTIVEBITS
3

示例 3 :
使用 BIT_COUNT函数查找以下二进制数的活动位数。由于下面例子中1的个数分别是0、1、4和7,所以我们将得到0、1、4和7个有效位的结果。

SELECT BIT_COUNT(b'0000') AS ActiveBits1, 
BIT_COUNT(b'00100') AS ActiveBits2,
BIT_COUNT(b'01010101') AS ActiveBits3, 
BIT_COUNT(b'1111111') AS ActiveBits4;

输出 :

ACTIVEBITS1ACTIVEBITS2ACTIVEBITS3ACTIVEBITS4
0147

示例 4:
BIT_COUNT函数也可用于列数据。为了演示创建一个名为 HolidayDetails 的表。

CREATE TABLE HolidayDetails (
Holiday_id INT AUTO_INCREMENT,  
YearDetails YEAR(4), 
MonthDetails INT(2) UNSIGNED ZEROFILL, 
DayDetails INT(2) UNSIGNED ZEROFILL,
PRIMARY KEY(Holiday_id));

将一些数据插入到 HolidayDetails 表中——

INSERT INTO HolidayDetails
(YearDetails, MonthDetails, DayDetails) VALUES
(2021, 1, 1), (2021, 1, 14),
(2021, 1, 26), (2021, 2, 19), 
(2021, 2, 21), (2021, 3, 10);

因此,HolidayDetails 表如下:

SELECT * from HolidayDetails;
HOLIDAY_IDYEARDETAILSMONTHDETAILSDAYDETAILS
1202111
22021114
32021126
42021219
52021221
62021310

现在我们要找出每个月的假期数——

SELECT YearDetails, MonthDetails, 
BIT_COUNT(BIT_OR(1<

输出 :

YEARDETAILSMONTHDETAILSNO_OF_HOLIDAYS
2021013
2021022
2021032