MySQL - BIT_OR() Function


Advertisements

In general, aggregation is a consideration of a collection of objects that are bound together as a single entity.

MySQL provides a set of aggregate functions that perform operations on all the entities of the column of a table considering them as a single unit.

The MySQL BIT_OR() function is used to calculate the bit-wise OR operation on the values in a particular column. If the arguments of this function are numbers this function returns a numerical value and if they are strings it returns a string.

If the specified row(s) doesn’t exist this function returns a neutral value (all bits are set to 1). The NULL values in the arguments of this function does not effect the result unless all of them are NULL in which case the result is a neutral value.

Syntax

Following is the syntax of this function –

BIT_OR(expr);

Example 1

Assume we have created a table and populated it using the following queries –

mysql> CREATE TABLE Test(ID INT,value VARCHAR(100));
mysql> INSERT INTO Test values(1, '110001');
mysql> INSERT INTO Test values(2, '11101');
mysql> INSERT INTO Test values(2, '11100001');

Following query calculates the bitwise-or operation on the entities of the column value

mysql> SELECT BIT_OR(value) from test;
+---------------+
| BIT_OR(value) |
+---------------+
|      11141117 |
+---------------+
1 row in set (0.07 sec)

Example 2

Following is an example demonstrating the usage of this function. Assume we have created a table with name MyPlayers in MySQL database using CREATE statement as shown below –

mysql> CREATE TABLE MyPlayers(
	ID INT,
	First_Name VARCHAR(255),
	Last_Name VARCHAR(255),
	Socre_In_Exhibiiton_match INT,
	COUNTRY VARCHAR(100),
	PRIMARY KEY (ID)
);

This table stores the first and last names, country, scores in an exhibition match of a player. Now, we will insert 7 records in MyPlayers table using INSERT statements −

insert into MyPlayers values(1, 'Shikhar', 'Dhawan', 95, 'India');
insert into MyPlayers values(2, 'Jonathan', 'Trott', 50, 'SouthAfrica');
insert into MyPlayers values(3, 'Kumara', 'Sangakkara', 25, 'Sri Lanka');
insert into MyPlayers values(4, 'Virat', 'Kohli', 50, 'India');
insert into MyPlayers values(5, 'Rohit', 'Sharma', 25, 'India');
insert into MyPlayers values(6, 'Ravindra', 'Jadeja', 15, 'India');
insert into MyPlayers values(7, 'James', 'Anderson', 15, 'England');

Following query calculates the bitwise or operation on the Socre_In_Exhibiiton_match column of the MyPlayers table grouped by country –

mysql> SELECT ID, First_Name, Last_Name, Country, BIT_OR(Socre_In_Exhibiiton_match) from MyPlayers group by country;
+----+------------+------------+-------------+-----------------------------------+
| ID | First_Name | Last_Name  | Country     | BIT_OR(Socre_In_Exhibiiton_match) |
+----+------------+------------+-------------+-----------------------------------+
| 1  |    Shikhar |     Dhawan |       India |                               127 |
| 2  |   Jonathan |      Trott | SouthAfrica |                                50 |
| 3  |     Kumara | Sangakkara |   Sri Lanka |                                25 |
| 7  |      James |   Anderson |     England |                                15 |
+----+------------+------------+-------------+-----------------------------------+
4 rows in set (0.00 sec)

Example 3

Following is another example of this function. Assume we have created another table named employee_tbl and inserted records in it as follows –

mysql> CREATE TABLE employee_tbl (
	id INT,
	name VARCHAR(255),
	Work_date INT,
	daily_typing_pages INT
);
mysql> insert into employee_tbl values(1, John, DATE('2007-01-24'), 250);
mysql> insert into employee_tbl values(2, 'Ram', DATE('2007-05-27'), 220);
mysql> insert into employee_tbl values(3, 'Jack', DATE('2007-05-06'), 170);
mysql> insert into employee_tbl values(3, 'Jack', DATE('2007-04-06'), 100);
mysql> insert into employee_tbl values(4, 'Jill', DATE('2007-04-06'), 220);
mysql> insert into employee_tbl values(5, 'Zara', DATE('2007-06-06'), 300);
mysql> insert into employee_tbl values(5, 'Zara', DATE('2007-02-06'), 350);

You can perform bitwise-or operation of various records set using GROUP BY clause.

mysql> SELECT name, BIT_OR(daily_typing_pages) FROM employee_tbl GROUP BY name;
+------+----------------------------+
| name | BIT_OR(daily_typing_pages) |
+------+----------------------------+
| Ram  |                        220 |
| Jack |                        238 |
| Jill |                        220 |
| Zara |                        382 |
| John |                        250 |
+------+----------------------------+
5 rows in set (0.00 sec)

Example 4

Let us create a table named student and inserted records into it using CREATE and INSERT statements as shown below –

mysql> CREATE TABLE student (name VARCHAR(15), marks INT, grade CHAR);
mysql> INSERT INTO student VALUES ('Raju', 80, 'A');
mysql> INSERT INTO student VALUES ('Rahman', 60, 'B');
mysql> INSERT INTO student VALUES ('Robert', 45, 'C');

Following query prints the bitwise-or value of the marks column of the student table –

mysql> SELECT name, BIT_OR(marks) FROM student GROUP BY name;
+--------+---------------+
| name   | BIT_OR(marks) |
+--------+---------------+
| Raju   |            80 |
| Rahman |            60 |
| Robert |            45 |
+--------+---------------+
3 rows in set (0.00 sec)

Example 5

Assume we have created and populated a table with name Sales.

mysql> CREATE TABLE sales(
	ID INT,
	ProductName VARCHAR(255),
	CustomerName VARCHAR(255),
	DispatchDate date,
	DeliveryTime time,
	Price INT,
	Location VARCHAR(255)
);
Query OK, 0 rows affected (2.22 sec)
INSERT INTO SALES values(1, 'Key-Board', 'Raja', DATE('2019-09-01'), TIME('11:00:00'), 7000, 'Hyderabad');
INSERT INTO SALES values(2, 'Earphones', 'Roja', DATE('2019-05-01'), TIME('11:00:00'), 2000, 'Vishakhapatnam');
INSERT INTO SALES values(3, 'Mouse', 'Puja', DATE('2019-03-01'), TIME('10:59:59'), 3000, 'Vijayawada');
INSERT INTO SALES values(4, 'Mobile', 'Vanaja', DATE('2019-03-01'), TIME('10:10:52'), 9000, 'Chennai');
INSERT INTO SALES values(5, 'Headset', 'Jalaja', DATE('2019-04-06'), TIME('11:08:59'), 6000, 'Goa');

Following query prints the bitwise-or value of the Price column grouped by the product name –

mysql> SELECT ProductName, CustomerName, DispatchDate, DeliveryTime, BIT_OR(Price) from sales GROUP BY ProductName;
+-------------+--------------+--------------+--------------+---------------+
| ProductName | CustomerName | DispatchDate | DeliveryTime | BIT_OR(Price) |
+-------------+--------------+--------------+--------------+---------------+
| Key-Board   |         Raja |   2019-09-01 |     11:00:00 |          7000 |
| Earphones   |         Roja |   2019-05-01 |     11:00:00 |          2000 |
| Mouse       |         Puja |   2019-03-01 |     10:59:59 |          3000 |
| Mobile      |       Vanaja |   2019-03-01 |     10:10:52 |          9000 |
| Headset     |       Jalaja |   2019-04-06 |     11:08:59 |          6000 |
+-------------+--------------+--------------+--------------+---------------+
5 rows in set (0.00 sec)
mysql-aggregate-functions.htm
Advertisements