This topic applies only to the BITOR, BITXOR, and BITAND functions.
- The target_arg and bit_mask_arg arguments are aligned on their least significant byte/bit.
- The smaller argument is padded with zeros to the left to become the same size as the larger argument.
Vantage pads to the left (instead of to the right) so that the hexadecimal byte literals, serving as bit masks, need not be changed every time the size of a byte string is changed.
Example: Querying the BITAND Operation on an INTEGER
The following query performs the BITAND operation on an INTEGER and a single-byte hexadecimal byte literal.
SELECT BITAND(287454020, 'FFFF'XB);
The INTEGER value 287,454,020 has hexadecimal value 0x11223344 and the following bit numbering representation:
The hexadecimal byte literal 0xFFFF has the following bit numbering representation:
To process the BITAND operation, the two arguments are aligned on their least significant byte/bit as follows:
The shorter-length hexadecimal byte literal 0xFFFF is padded with zeros to the left to be the same length as the INTEGER value 287,454,020.
When both operands are the same size, the BITAND operation is performed, producing the following result: