Performing Bit-Byte Operations against Arguments with Unequal Lengths - Teradata Vantage

Teradata® VantageCloud Lake

Deployment
VantageCloud
Edition
Lake
Product
Teradata Vantage
Published
January 2023
ft:locale
en-US
ft:lastEdition
2024-12-11
dita:mapPath
phg1621910019905.ditamap
dita:ditavalPath
pny1626732985837.ditaval
dita:id
phg1621910019905

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:
  • 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: