Performing Bit-Byte Operations against Arguments with Non-Equal Lengths
This topic applies only to the BITOR, BITXOR, and BITAND functions.
If the target_arg and bit_mask_arg arguments passed to these functions differ in length:
Teradata Database pads to the left (instead of to the right) so that the hexadecimal byte literals, serving as bit masks, will not have to be changed every time the size of a byte string is changed.
Example
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 a hexadecimal value of 0x11223344 and a bit numbering representation of:
The hexadecimal byte literal 0xFFFF has a bit numbering representation of:
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 until it is 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: