The BITSTRING function extracts selected bits from a binary data
value. This functionality is primarily intended to query the bit
values stored in the RDB$FLAGS columns in the Rdb system table,
but can also be used for user data.
BITSTRING accepts numeric and date/time values and processes them
as bit arrays. The first (least significant) bit is numbered 1.
The most significant bit depends on the data type.
o TINYINT has 8 bits
o SMALLINT has 16 bits
o INTEGER has 32 bits
o BIGINT, DATE, TIME, TIMESTAMP and INTERVAL types have 64 bits
o The numeric expression after the FOR and FROM keywords must be
unscaled numeric values.
The following notes apply to usage of the BITSTRING function:
o If the numeric expression of the FOR clause is less than equal
to zero then it will be assumed equal to 1.
o If the FOR clause is omitted it will default to a value that
includes all remaining bits of the source value.
o If the FOR clause specifies a larger value than the number
of bits remaining in the source then will only return the
remaining bits.
Example: Using the BITSTRING function
Bit 1 in the RDB$FLAGS column of RDB$RELATIONS indicates that the
table is a view. This example uses this query to fetch the names
of all user defined views in the PERSONNEL database.
SQL> select rdb$relation_name
cont> from rdb$relations
cont> where rdb$system_flag = 0 and
cont> bitstring (rdb$flags from 1 for 1) = 1;
RDB$RELATION_NAME
CURRENT_JOB
CURRENT_SALARY
CURRENT_INFO
3 rows selected
SQL>