In Oracle, the BITAND()
function returns a bitwise AND
of its two arguments.
Syntax
The syntax goes like this:
BITAND(expr1, expr2)
Where expr1
and expr2
are of type NUMBER
.
The arguments must be in the range -(2(n-1)) .. ((2(n-1))-1). If an argument is out of this range, the result is undefined.
Also, if either argument is NULL
, the result is NULL
.
Example
Here’s an example:
SELECT BITAND(6, 3)
FROM DUAL;
Result:
BITAND(6,3) ______________ 2
Non-Numeric Arguments
Here’s what happens when we provide a non-numeric argument that can’t be converted to a numeric data type:
SELECT BITAND('six', 3)
FROM DUAL;
Result:
Error starting at line : 1 in command - SELECT BITAND('six',3) FROM DUAL Error report - ORA-01722: invalid number
Null Values
If any of the arguments are null
, the result is null
:
SET NULL 'null';
SELECT
BITAND(null, 3),
BITAND(6, null)
FROM DUAL;
Result:
BITAND(NULL,3) BITAND(6,NULL) _________________ _________________ null null
By default, SQLcl and SQL*Plus return a blank space whenever null
occurs as a result of a SQL SELECT
statement.
However, you can use SET NULL
to specify a different string to be returned. Here I specified that the string null
should be returned.
Incorrect Argument Count
Calling BITAND()
without passing any arguments returns an error:
SELECT BITAND()
FROM DUAL;
Result:
Error starting at line : 1 in command - SELECT BITAND() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
And passing the wrong number of arguments results in an error:
SELECT BITAND(1, 2, 3)
FROM DUAL;
Result:
Error starting at line : 1 in command - SELECT BITAND(1, 2, 3) FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: