MySQL BIT_OR() Function

Summary: in this tutorial, you will learn how to use the MySQL BIT_OR() function to perform a bitwise OR operation on the values of a column in a table.

Introduction to MySQL BIT_OR() function

The BIT_OR() function is an aggregate function that performs a bitwise OR operation on values in a column of a table.

The bitwise OR takes two-bit patterns of equal length and performs the logical inclusive OR on each pair of corresponding bits. It returns 0 if both bits are 0, otherwise it returns 1.

For example, the following illustrates how to perform a bitwise OR on the 0101 (decimal 5) and 0011 (decimal 3), which results in 0111 (decimal 7):

0101 (decimal 5)
0011 (decimal 3)
----
0111 (decimal 7)

Here’s the basic syntax of the BIT_OR function:

SELECT BIT_OR(column_name)
FROM table_name;Code language: SQL (Structured Query Language) (sql)

In practice, you’ll use the BIT_OR function to manipulate data at the bit level such as permission systems.

MySQL BIT_OR() function example

First, create a new table called permissions that has two columns user_id and permission_flags:

CREATE TABLE permissions (
    user_id INT PRIMARY KEY,
    permission_flags INT
);Code language: SQL (Structured Query Language) (sql)

In this table, the user_id uniquely identifies each user and permission_flags stores the user’s permissions flags as binary values.

Second, insert some rows into the permissions table:

INSERT INTO permissions (user_id, permission_flags)
VALUES
    (1, 6),   -- Binary: 0110
    (2, 3),   -- Binary: 0011
    (3, 5);   -- Binary: 0101Code language: SQL (Structured Query Language) (sql)

Third, determine the collective permission of users with id 1 and 2 by using the BIT_OR function to combine permission flags:

SELECT 
  BIT_OR(permission_flags) AS collective_permissions 
FROM 
  permissions 
WHERE 
  user_id IN (1, 2);Code language: SQL (Structured Query Language) (sql)

Output:

+------------------------+
| collective_permissions |
+------------------------+
|                      7 |
+------------------------+
1 row in set (0.00 sec)Code language: SQL (Structured Query Language) (sql)

When we apply the bitwise OR operation, the result will be 0111, which corresponds to the decimal value 7.

This means that the collective permissions for users 1 and 2 include the permission flags for reading, writing, and possibly other permissions (depending on your specific flag definitions).

Summary

  • Use MySQL BIT_OR to perform bitwise operations on values in a columns of table.
Was this tutorial helpful?