当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


MySQL BIT_COUNT()用法及代码示例


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

用法:

BIT_COUNT(number)

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

  • 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;

输出:

活动位1 活动位2 活动位3 活动位4
0 1 4 7

示例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_ID YEARDETAILS MONTHDETAILS DAYDETAILS
1 2021 1 1
2 2021 1 14
3 2021 1 26
4 2021 2 19
5 2021 2 21
6 2021 3 10

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

SELECT YearDetails, MonthDetails, 
BIT_COUNT(BIT_OR(1<<DayDetails)) AS No_Of_Holidays 
FROM HolidayDetails 
GROUP By YearDetails, MonthDetails;

输出:

YEARDETAILS MONTHDETAILS NO_OF_HOLIDAYS
2021 01 3
2021 02 2
2021 03 2

相关用法


注:本文由纯净天空筛选整理自jana_sayantan大神的英文原创作品 BIT_COUNT() function in MySQL。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。