15.00 - Performing Bit-Byte Operations against Arguments with Non-Equal Lengths - Teradata Database

Teradata Database SQL Functions, Operators, Expressions, and Predicates

Product
Teradata Database
Release Number
15.00
Content Type
Programming Reference
Publication ID
B035-1145-015K
Language
English (United States)

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:

  • 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 until it becomes the same size as the larger argument.
  • 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: