9.5. Функции и операторы для работы с бинарными строками#
9.5. Функции и операторы для работы с бинарными строками
Этот раздел описывает функции и операторы для изучения и
манипулирования двоичными строками, то есть значениями типа bytea
.
Многие из них эквивалентны по назначению и синтаксису
функциям работы со строками, описанным в предыдущем разделе.
SQL определяет некоторые строковые функции, которые используют ключевые слова, а не запятые, для разделения аргументов. Подробности приведены в разделе Таблица 9.11. Tantor SE также предоставляет версии этих функций, которые используют обычный синтаксис вызова функций (см. раздел Таблица 9.12).
Таблица 9.11. SQL Функции и операторы для работы с бинарными строками
Дополнительные функции для манипуляции с бинарными строками доступны и перечислены в Таблица 9.12. Некоторые из них используются внутренне для реализации стандартных строковых функций SQL, перечисленных в Таблица 9.11.
Таблица 9.12. Другие функции для работы с двоичными строками
Функция Описание Пример(ы) |
---|
Возвращает количество установленных битов в двоичной строке (также известное как “popcount”).
|
Удаляет самую длинную строку, содержащую только байты, указанные в
|
Извлекает n-й бит из двоичной строки.
|
Извлекает n-й байт из двоичной строки.
|
Возвращает количество байтов в двоичной строке.
|
Возвращает количество символов в двоичной строке, предполагая, что это текст в заданной кодировке
|
Удаляет самую длинную строку, содержащую только байты, указанные в
|
Вычисляет MD5-hash двоичной строки, результат записывается в шестнадцатеричном формате.
|
Удаляет самую длинную строку, содержащую только байты, указанные в
|
Устанавливает n-й бит в
двоичной строке в значение
|
Устанавливает n-й байт в
двоичной строке в значение
|
Вычисляет SHA-224 хеш двоичной строки.
|
Вычисляет SHA-256 хеш hash бинарной строки.
|
Вычисляет SHA-384 хеш двоичной строки.
|
Вычисляет SHA-512 хеш hash двоичной строки.
|
Извлекает подстроку из
|
Функции get_byte
и set_byte
нумеруют первый байт двоичной строки как байт 0.
Функции get_bit
и set_bit
нумеруют биты справа в каждом байте; например, бит 0 является наименее значимым битом первого байта, а бит 15 - наиболее значимым битом второго байта.
Для исторических причин функция md5
возвращает
шестнадцатеричное значение типа text
, в то время как функции SHA-2
возвращают тип bytea
. Используйте функции
encode
и decode
для
преобразования между ними. Например, напишите encode(sha256('abc'),
'hex')
, чтобы получить шестнадцатеричное текстовое представление,
или decode(md5('abc'), 'hex')
, чтобы получить
значение типа bytea
.
Функции для преобразования строк между различными наборами символов (кодировками) и для представления произвольных двоичных данных в текстовой форме показаны в Таблица 9.13. Для этих функций аргумент или результат типа text
выражается в кодировке по умолчанию базы данных, в то время как аргументы или результаты типа bytea
находятся в кодировке, указанной другим аргументом.
Таблица 9.13. Функции преобразования текста/бинарной строки
Функция Описание Пример(ы) |
---|
Преобразует двоичную строку, представляющую текст в кодировке
|
Преобразует двоичную строку, представляющую текст в кодировке
|
Преобразует строку
|
Преобразует двоичные данные в текстовое представление; поддерживаемые значения
|
Декодирует двоичные данные из текстового представления; поддерживаемые значения
|
Функции encode
и decode
поддерживают следующие текстовые форматы:
- base64
Формат
base64
соответствует разделу 6.8 RFC 2045. Согласно RFC, закодированные строки разбиваются на 76 символов. Однако вместо символа CRLF MIME в конце строки используется только символ перехода строки. Функцияdecode
игнорирует символы возврата каретки, перехода строки, пробела и табуляции. В противном случае, при передаче недопустимых данных base64 функцииdecode
возникает ошибка, включая неправильное заполнение дополнительными символами.- escape
Формат
escape
преобразует нулевые байты и байты с установленным старшим битом в восьмеричные последовательности экранирования (\
nnn
), и удваивает обратные косые черты. Другие значения байтов представлены буквально. Функцияdecode
вызовет ошибку, если за обратной косой чертой не следует либо вторая обратная косая черта, либо три восьмеричные цифры; она принимает другие значения байтов без изменений.- hex
Формат
hex
представляет каждые 4 бита данных в виде одной шестнадцатеричной цифры, от0
доf
, записывая старший разряд каждого байта первым. Функцияencode
выводит шестнадцатеричные цифры отa
доf
в нижнем регистре. Поскольку наименьшая единица данных составляет 8 бит, всегда возвращается четное количество символов при вызове функцииencode
. Функцияdecode
принимает символыa
-f
в верхнем или нижнем регистре. Возникает ошибка, когда функцииdecode
передаются недопустимые шестнадцатеричные данные, включая случай с нечетным количеством символов.
См. также агрегатную функцию string_agg
в
Раздел 9.21 и функции для работы с большими объектами
в Раздел 33.4.