Back to Presto

Binary Functions and Operators

presto-docs/src/main/sphinx/functions/binary.rst

0.2975.4 KB
Original Source

============================== Binary Functions and Operators

Binary Operators

The || operator performs concatenation.

Binary Functions

.. function:: length(binary) -> bigint :noindex:

Returns the length of ``binary`` in bytes.

.. function:: concat(binary1, ..., binaryN) -> varbinary :noindex:

Returns the concatenation of ``binary1``, ``binary2``, ``...``, ``binaryN``.
This function provides the same functionality as the
SQL-standard concatenation operator (``||``).

.. function:: substr(binary, start) -> varbinary :noindex:

Returns the rest of ``binary`` from the starting position ``start``,
measured in bytes. Positions start with ``1``. A negative starting position
is interpreted as being relative to the end of the string.

.. function:: substr(binary, start, length) -> varbinary :noindex:

Returns a substring from ``binary`` of length ``length`` from the starting
position ``start``, measured in bytes. Positions start with ``1``. A
negative starting position is interpreted as being relative to the end of
the string.

.. function:: to_base64(binary) -> varchar

Encodes ``binary`` into a base64 string representation.

.. function:: from_base64(string) -> varbinary

Decodes binary data from the base64 encoded ``string``.

.. function:: to_base64url(binary) -> varchar

Encodes ``binary`` into a base64 string representation using the URL safe alphabet.

.. function:: from_base64url(string) -> varbinary

Decodes binary data from the base64 encoded ``string`` using the URL safe alphabet.

.. function:: from_base32(string) -> varbinary

Decodes binary data from the base32 encoded ``string``.

.. function:: to_base32(binary) -> varchar

Encodes ``binary`` into a base32 string representation.

.. function:: to_hex(binary) -> varchar

Encodes ``binary`` into a hex string representation.

.. function:: from_hex(string) -> varbinary

Decodes binary data from the hex encoded ``string``.

.. function:: to_big_endian_64(bigint) -> varbinary

Encodes ``bigint`` in a 64-bit 2's complement big endian format.

.. function:: from_big_endian_64(binary) -> bigint

Decodes ``bigint`` value from a 64-bit 2's complement big endian ``binary``.

.. function:: to_big_endian_32(integer) -> varbinary

Encodes ``integer`` in a 32-bit 2's complement big endian format.

.. function:: from_big_endian_32(binary) -> integer

Decodes ``integer`` value from a 32-bit 2's complement big endian ``binary``.

.. function:: to_ieee754_32(real) -> varbinary

Encodes ``real`` in a 32-bit big-endian binary according to IEEE 754 single-precision floating-point format.

.. function:: from_ieee754_32(binary) -> real

Decodes the 32-bit big-endian ``binary`` in IEEE 754 single-precision floating-point format.

.. function:: to_ieee754_64(double) -> varbinary

Encodes ``double`` in a 64-bit big-endian binary according to IEEE 754 double-precision floating-point format.

.. function:: from_ieee754_64(binary) -> double

Decodes the 64-bit big-endian ``binary`` in IEEE 754 double-precision floating-point format.

.. function:: lpad(binary, size, padbinary) -> varbinary :noindex:

Left pads ``binary`` to ``size`` bytes with ``padbinary``.
If ``size`` is less than the length of ``binary``, the result is
truncated to ``size`` characters. ``size`` must not be negative
and ``padbinary`` must be non-empty.

.. function:: rpad(binary, size, padbinary) -> varbinary :noindex:

Right pads ``binary`` to ``size`` bytes with ``padbinary``.
If ``size`` is less than the length of ``binary``, the result is
truncated to ``size`` characters. ``size`` must not be negative
and ``padbinary`` must be non-empty.

.. function:: crc32(binary) -> bigint

Computes the CRC-32 of ``binary``. For general purpose hashing, use
:func:`!xxhash64`, as it is much faster and produces a better quality hash.

.. function:: md5(binary) -> varbinary

Computes the md5 hash of ``binary``.

.. function:: murmur3_x64_128(binary) -> varbinary

Computes a hash of ``binary`` that is equivalent to C++ MurmurHash3_x64_128 (Murmur3F) of the same ``binary``.

.. function:: sha1(binary) -> varbinary

Computes the sha1 hash of ``binary``.

.. function:: sha256(binary) -> varbinary

Computes the sha256 hash of ``binary``.

.. function:: sha512(binary) -> varbinary

Computes the sha512 hash of ``binary``.

.. function:: xxhash64(binary) -> varbinary

Computes the xxhash64 hash of ``binary``.

.. function:: xxhash64(binary, bigint) -> varbinary

Computes the xxhash64 hash of ``binary`` with seed ``bigint``.

.. function:: spooky_hash_v2_32(binary) -> varbinary

Computes the 32-bit SpookyHashV2 hash of ``binary``.

.. function:: spooky_hash_v2_64(binary) -> varbinary

Computes the 64-bit SpookyHashV2 hash of ``binary``.

.. function:: hmac_md5(binary, key) -> varbinary

Computes HMAC with md5 of ``binary`` with the given ``key``.

.. function:: hmac_sha1(binary, key) -> varbinary

Computes HMAC with sha1 of ``binary`` with the given ``key``.

.. function:: hmac_sha256(binary, key) -> varbinary

Computes HMAC with sha256 of ``binary`` with the given ``key``.

.. function:: hmac_sha512(binary, key) -> varbinary

Computes HMAC with sha512 of ``binary`` with the given ``key``.

.. function:: reverse(binary) -> varbinary :noindex:

Returns ``binary`` with the bytes in reverse order.