GoogleSQL for Spanner supports the following bit functions.
Function list
Name | Summary |
---|---|
BIT_AND
|
Performs a bitwise AND operation on an expression. For more information, see Aggregate functions . |
BIT_COUNT
|
Gets the number of bits that are set in an input expression. |
BIT_OR
|
Performs a bitwise OR operation on an expression. For more information, see Aggregate functions . |
BIT_REVERSE
|
Reverses the bits in an integer. |
BIT_XOR
|
Performs a bitwise XOR operation on an expression. For more information, see Aggregate functions . |
BIT_COUNT
BIT_COUNT
(
expression
)
Description
The input, expression
, must be an
integer or BYTES
.
Returns the number of bits that are set in the input expression
.
For signed integers, this is the number of bits in two's complement form.
Return Data Type
INT64
Example
SELECT
a
,
BIT_COUNT
(
a
)
AS
a_bits
,
FORMAT
(
"%T"
,
b
)
as
b
,
BIT_COUNT
(
b
)
AS
b_bits
FROM
UNNEST
(
[
STRUCT
(
0
AS
a
,
b
''
AS
b
),
(
0
,
b
'
\
x00'
),
(
5
,
b
'
\
x05'
),
(
8
,
b
'
\
x00
\
x08'
),
(
0xFFFF
,
b
'
\
xFF
\
xFF'
),
(
-
2
,
b
'
\
xFF
\
xFF
\
xFF
\
xFF
\
xFF
\
xFF
\
xFF
\
xFE'
),
(
-
1
,
b
'
\
xFF
\
xFF
\
xFF
\
xFF
\
xFF
\
xFF
\
xFF
\
xFF'
),
(
NULL
,
b
'
\
xFF
\
xFF
\
xFF
\
xFF
\
xFF
\
xFF
\
xFF
\
xFF
\
xFF
\
xFF'
)
]
)
AS
x
;
/*-------+--------+---------------------------------------------+--------*
| a | a_bits | b | b_bits |
+-------+--------+---------------------------------------------+--------+
| 0 | 0 | b"" | 0 |
| 0 | 0 | b"\x00" | 0 |
| 5 | 2 | b"\x05" | 2 |
| 8 | 1 | b"\x00\x08" | 1 |
| 65535 | 16 | b"\xff\xff" | 16 |
| -2 | 63 | b"\xff\xff\xff\xff\xff\xff\xff\xfe" | 63 |
| -1 | 64 | b"\xff\xff\xff\xff\xff\xff\xff\xff" | 64 |
| NULL | NULL | b"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff" | 80 |
*-------+--------+---------------------------------------------+--------*/
BIT_REVERSE
BIT_REVERSE
(
value
,
preserve_sign
)
Description
Takes an integer value and returns its bit-reversed version. When preserve_sign
is TRUE
, this function provides the same bit-reversal
algorithm used in bit-reversed sequence. For more information, see Bit-reversed sequence
.
If the input value is NULL
, the function returns NULL
.
Arguments:
-
value
: The integer to bit reverse.Sequence
only supportsINT64
. -
preserve_sign
:TRUE
to exclude the sign bit, otherwiseFALSE
.
Return Data Type
The same data type as value
.
Example
SELECT
BIT_REVERSE
(
100
,
true
)
AS
results
/*---------------------*
| Results |
+---------------------+
| 1369094286720630784 |
*---------------------*/
SELECT
BIT_REVERSE
(
100
,
false
)
AS
results
/*---------------------*
| Results |
+---------------------+
| 2738188573441261568 |
*---------------------*/
SELECT
BIT_REVERSE
(
-
100
,
true
)
AS
results
/*----------------------*
| Results |
+----------------------+
| -7133701809754865665 |
*----------------------*/
SELECT
BIT_REVERSE
(
-
100
,
false
)
AS
results
/*---------------------*
| Results |
+---------------------+
| 4179340454199820287 |
*---------------------*/