В данном разделе описываются функции и операторы, предназначенные для анализа и обработки двоичных строк, то есть значений типа данных bytea. Многие из них по своему назначению и синтаксису эквивалентны функциям для работы с текстовыми строками, описанным в предыдущем разделе.
SQL определяет ряд строковых функций, в которых для разделения аргументов используются ключевые слова, а не запятые. Подробные сведения приведены в Таблица 2.6.11. Digital Q.DataBase также предоставляются версии данных функций, использующие стандартный синтаксис вызова функций (см. Таблица 2.6.12).
Таблица 2.6.11. SQL Функции и операторы для работы с двоичными строками
Доступны дополнительные функции для работы с двоичными строками, которые приведены в Таблица 2.6.12. Некоторые из них используются во внутренних механизмах системы для реализации SQL-стандартных строковых функций, перечисленных в Таблица 2.6.11.
Таблица 2.6.12. Прочие функции для работы с двоичными строками
Функция Описание Примеры |
|---|
Возвращает количество битов, установленных в двоичной строке (также называемое «popcount»).
|
Извлекает n-й бит из двоичной строки.
|
Извлекает n-й байт из двоичной строки.
|
|
Возвращает количество байтов в двоичной строке.
|
Возвращает количество символов в двоичной строке в предположении,
что она содержит текст в заданной кодировке
|
|
Вычисляет хеш-сумму по алгоритму MD5 хеш-сумма для двоичная строка, результат представлен в шестнадцатеричном формате.
|
Устанавливает n-й бит в
двоичной строке
|
Устанавливает n-й байт в
двоичной строке
|
|
Вычисляет значение SHA-224 хеш-сумма для двоичной строки.
|
|
Вычисляет значение SHA-256 хеш-сумма для двоичной строки.
|
|
Вычисляет значение SHA-384 хеш-сумма для двоичной строки.
|
|
Вычисляет хеш-сумму SHA-512 хеш-сумма для двоичной строки.
|
Данная операция извлекает подстроку из
|
Функции 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 значения.
Функции для преобразования строк между различными наборами символов (кодировками), а также для представления произвольных двоичных данных в текстовой форме, приведены в
Таблица 2.6.13. Для этих
функций аргумент или результат с типом text выражается в кодировке базы данных по умолчанию, тогда как аргументы или результаты с типом bytea представлены в кодировке, указанной в другом аргументе.
Таблица 2.6.13. Функции преобразования текстовых и двоичных строк
Функция Описание Пример(ы) |
|---|
Преобразует двоичную строку, представляющую текст в
кодировке
|
Преобразует двоичную строку, представляющую текст в
кодировке
|
Преобразует
|
Функция выполняет кодирование двоичных данных в текстовое представление; поддерживаются следующие
|
Функция выполняет декодирование двоичных данных из текстового представления; поддерживаемые
|
Функции, функция encode и функция decode
функции поддерживают следующие текстовые форматы:
Данный base64 особенность формата заключается в том, что
из RFC
2045, раздел 6.8. Согласно спецификации RFC, закодированные строки
разбиваются на сегменты по 76 символов. Однако вместо маркера конца строки CRLF, используемого в MIME,
в качестве разделителя строк применяется только символ новой строки.
Данный функция decode функция игнорирует символы возврата каретки,
перевода строки, пробела и табуляции. В противном случае генерируется ошибка,
если функция decode переданы некорректные
данные в формате base64 — включая случаи с неверным дополнением (padding) в конце строки.
Данный escape данный формат преобразует нулевые байты и
байты с установленным старшим битом в восьмеричные escape-последовательности
(\nnn), а также дублирует
обратные косые черты. Другие значения байтов представляются в буквальном виде.
Данный функция decode функция вызовет ошибку, если за
символом обратной косой черты не следует ни вторая обратная косая черта, ни три
восьмеричные цифры; она принимает другие значения байтов без изменений.
Данный hex данный формат представляет каждые 4 бита
данных в виде одной шестнадцатеричной цифры 0
от f, при этом первым записывается старший разряд
каждого байта. Эта функция encode функция выводит
с a-f шестнадцатеричные цифры в нижнем
регистре. Поскольку минимальной единицей данных является 8 бит, количество символов, возвращаемых
функцией, всегда будет четным
с помощью функция encode.
Данный функция decode функция
принимает a-f символы в
верхнем или нижнем регистре. Ошибка генерируется
в случае, функция decode когда переданы некорректные шестнадцатеричные данные
— в том числе при передаче нечётного количества символов.
См. также агрегатную функцию string_agg в
Раздел 2.6.21 и функции для работы с большими объектами
в Раздел 4.2.4.