BIT Functions and Operators

Bitwise Operator

A Bitwise operator performs operations in bits, and can be used in arithmetic operations. An integer type is specified as the operand and the BIT type cannot be specified. An integer of BIGINT type (64-bit integer) is returned as a result of the operation. If one or more operands are NULL, NULL is returned.

The following table shows the bitwise operators supported by CUBRID.

The bitwise operators

Bitwise operator Description Expression Return Value
& Performs AND operation in bits and returns a BIGINT integer. 17 & 3 1
| Performs OR operation in bits and returns a BIGINT integer. 17 | 3 19
^ Performs XOR operation in bits and returns a BIGINT integer. 17 ^ 3 18
~ A unary operator. It performs complementary operation that reverses (INVERT) the bit order of the operand and returns a BIGINT integer. ~17 -18
<< Performs the operation to shift bits of the left operand as far to the left as the value of the right operand, and returns a BIGINT integer. 17 << 3 136
>> Performs the operation to shift bits of the left operand as far to the right as the value of the right operand, and returns a BIGINT integer. 17 >> 3 2

BIT_AND

BIT_AND(expr)

As an aggregate function, it performs AND operations in bits on every bit of expr. The return value is a BIGINT type. If there is no row that satisfies the expression, NULL is returned.

Parameters:expr -- An expression of integer type
Return type:BIGINT
CREATE TABLE bit_tbl(id int);
INSERT INTO bit_tbl VALUES (1), (2), (3), (4), (5);
SELECT 1&3&5, BIT_AND(id) FROM bit_tbl WHERE id in(1,3,5);
     1&3&5           bit_and(id)
============================================
         1                     1

BIT_OR

BIT_OR(expr)

As an aggregate function, it performs OR operations in bits on every bit of expr. The return value is a BIGINT type. If there is no row that satisfies the expression, NULL is returned.

Parameters:expr -- An expression of integer type
Return type:BIGINT
SELECT 1|3|5, BIT_OR(id) FROM bit_tbl WHERE id in(1,3,5);
     1|3|5            bit_or(id)
============================================
          7                     7

BIT_XOR

BIT_XOR(expr)

As an aggregate function, it performs XOR operations in bits on every bit of expr. The return value is a BIGINT type. If there is no row that satisfies the expression, NULL is returned.

Parameters:expr -- An expression of integer type
Return type:BIGINT
SELECT 1^2^3, BIT_XOR(id) FROM bit_tbl WHERE id in(1,3,5);
     1^3^5            bit_xor(id)
============================================
          7                     7

BIT_COUNT

BIT_COUNT(expr)

The BIT_COUNT function returns the number of bits of expr that have been set to 1; it is not an aggregate function. The return value is a BIGINT type.

Parameters:expr -- An expression of integer type
Return type:BIGINT
SELECT BIT_COUNT(id) FROM bit_tbl WHERE id in(1,3,5);
   bit_count(id)
================
       1
       2
       2