×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

2.6.5. Функции и операторы для работы с двоичными строками

В данном разделе описываются функции и операторы, предназначенные для анализа и обработки двоичных строк, то есть значений типа данных bytea. Многие из них по своему назначению и синтаксису эквивалентны функциям для работы с текстовыми строками, описанным в предыдущем разделе.

SQL определяет ряд строковых функций, в которых для разделения аргументов используются ключевые слова, а не запятые. Подробные сведения приведены в Таблица 2.6.11. Digital Q.DataBase также предоставляются версии данных функций, использующие стандартный синтаксис вызова функций (см. Таблица 2.6.12).

Таблица 2.6.11. SQL Функции и операторы для работы с двоичными строками

Функция/оператор

Описание

Примеры

bytea || byteabytea

Выполняет конкатенацию двух двоичных строк.

'\x123456'::bytea || '\x789a00bcde'::bytea\x123456789a00bcde

bit_length ( bytea ) → integer

Возвращает количество бит в двоичной строке (8 раз больше octet_length).

bit_length('\x123456'::bytea)24

btrim ( байты bytea, удаляемые байты bytea ) → bytea

Удаляет самую длинную последовательность, состоящую только из байтов, указанных в удаляемые байты в начале и в конце байты.

btrim('\x1234567890'::bytea, '\x9012'::bytea)\x345678

функция ltrim ( байты bytea, удаляемые байты bytea ) → bytea

Удаляет самую длинную последовательность, состоящую только из байтов, указанных в удаляемые байты с начала байты.

ltrim('\x1234567890'::bytea, '\x9012'::bytea)\x34567890

octet_length ( bytea ) → integer

Возвращает количество байтов в двоичной строке.

octet_length('\x123456'::bytea)3

overlay ( байты bytea PLACING newsubstring bytea FROM start integer [ FOR count integer ] ) → bytea

Данная функция заменяет подстроку в байты которая начинается с с start-го байта и имеет длину в count байтов с newsubstring. Если count параметр опущен, по умолчанию используется длина из newsubstring.

overlay('\x1234567890'::bytea placing '\002\003'::bytea from 2 for 3)\x12020390

position ( substring bytea IN байты bytea ) → integer

Возвращает первый начальный индекс указанной подстроки substring в байты, или ноль, если она отсутствует.

position('\x5678'::bytea in '\x1234567890'::bytea)3

rtrim ( байты bytea, удаляемые байты bytea ) → bytea

Удаляет самую длинную последовательность, состоящую только из байтов, указанных в удаляемые байты с конца байты.

rtrim('\x1234567890'::bytea, '\x9012'::bytea)\x12345678

substring ( байты bytea [ FROM start integer ] [ FOR count integer ] ) → bytea

Данная операция извлекает подстроку из байты начиная с указанной позиции с start-го байта, если он указан, и завершая операцию после count байтов, если указано указано. Необходимо указать как минимум один из аргументов start и count.

substring('\x1234567890'::bytea from 3 for 2)\x5678

trim ( [ LEADING | TRAILING | BOTH ] удаляемые байты bytea FROM байты bytea ) → bytea

Удаляет самую длинную последовательность, состоящую только из байтов, указанных в удаляемые байты с начала, конца или с обеих сторон (BOTH используется по умолчанию) из байты.

trim('\x9012'::bytea from '\x1234567890'::bytea)\x345678

trim ( [ LEADING | TRAILING | BOTH ] [ FROM ] байты bytea, удаляемые байты bytea ) → bytea

Данный синтаксис не является стандартным для trim().

trim(both from '\x1234567890'::bytea, '\x9012'::bytea)\x345678


Доступны дополнительные функции для работы с двоичными строками, которые приведены в Таблица 2.6.12. Некоторые из них используются во внутренних механизмах системы для реализации SQL-стандартных строковых функций, перечисленных в Таблица 2.6.11.

Таблица 2.6.12. Прочие функции для работы с двоичными строками

Функция

Описание

Примеры

bit_count ( байты bytea ) → bigint

Возвращает количество битов, установленных в двоичной строке (также называемое «popcount»).

bit_count('\x1234567890'::bytea)15

get_bit ( байты bytea, n bigint ) → integer

Извлекает n-й бит из двоичной строки.

get_bit('\x1234567890'::bytea, 30)1

get_byte ( байты bytea, n integer ) → integer

Извлекает n-й байт из двоичной строки.

get_byte('\x1234567890'::bytea, 4)144

длины ( bytea ) → integer

Возвращает количество байтов в двоичной строке.

length('\x1234567890'::bytea)5

длины ( байты bytea, кодировка name ) → integer

Возвращает количество символов в двоичной строке в предположении, что она содержит текст в заданной кодировке кодировка.

length('jose'::bytea, 'UTF8')4

md5 ( bytea ) → text

Вычисляет хеш-сумму по алгоритму MD5 хеш-сумма для двоичная строка, результат представлен в шестнадцатеричном формате.

md5('Th\000omas'::bytea)8ab2d3c9689aaf18​b4958c334c82d8b1

set_bit ( байты bytea, n bigint, новое_значение integer ) → bytea

Устанавливает n-й бит в двоичной строке новое_значение.

set_bit('\x1234567890'::bytea, 30, 0)\x1234563890

set_byte ( байты bytea, n integer, новое_значение integer ) → bytea

Устанавливает n-й байт в двоичной строке новое_значение.

set_byte('\x1234567890'::bytea, 4, 64)\x1234567840

sha224 ( bytea ) → bytea

Вычисляет значение SHA-224 хеш-сумма для двоичной строки.

sha224('abc'::bytea)\x23097d223405d8228642a477bda2​55b32aadbce4bda0b3f7e36c9da7

sha256 ( bytea ) → bytea

Вычисляет значение SHA-256 хеш-сумма для двоичной строки.

sha256('abc'::bytea)\xba7816bf8f01cfea414140de5dae2223​b00361a396177a9cb410ff61f20015ad

sha384 ( bytea ) → bytea

Вычисляет значение SHA-384 хеш-сумма для двоичной строки.

sha384('abc'::bytea)\xcb00753f45a35e8bb5a03d699ac65007​272c32ab0eded1631a8b605a43ff5bed​8086072ba1e7cc2358baeca134c825a7

sha512 ( bytea ) → bytea

Вычисляет хеш-сумму SHA-512 хеш-сумма для двоичной строки.

sha512('abc'::bytea)\xddaf35a193617abacc417349ae204131​12e6fa4e89a97ea20a9eeee64b55d39a​2192992a274fc1a836ba3c23a3feebbd​454d4423643ce80e2a9ac94fa54ca49f

функция substr ( байты bytea, start integer [, count integer ] ) → bytea

Данная операция извлекает подстроку из байты начиная с указанной позиции с start-й байт, с извлечением подстроки заданной count байтов, если указано длины. (Аналогично функции функции substring(байты из start в count).)

substr('\x1234567890'::bytea, 3, 2)\x5678


Функции 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. Функции преобразования текстовых и двоичных строк

Функция

Описание

Пример(ы)

convert ( байты bytea, src_encoding name, dest_encoding name ) → bytea

Преобразует двоичную строку, представляющую текст в кодировке src_encoding в двоичную строку в кодировке dest_encoding (см. Раздел 3.8.3.4 информацию о доступных преобразованиях).

convert('text_in_utf8', 'UTF8', 'LATIN1')\x746578745f696e5f75746638

convert_from ( байты bytea, src_encoding name ) → text

Преобразует двоичную строку, представляющую текст в кодировке src_encoding в text в кодировке базы данных (см. Раздел 3.8.3.4 информацию о доступных преобразованиях).

convert_from('text_in_utf8', 'UTF8')text_in_utf8

convert_to ( string text, dest_encoding name ) → bytea

Преобразует text строку (в кодировке базы данных) в двоичную строку, представленную в кодировке dest_encoding (см. Раздел 3.8.3.4 информацию о доступных преобразованиях).

convert_to('some_text', 'UTF8')\x736f6d655f74657874

функция encode ( байты bytea, format text ) → text

Функция выполняет кодирование двоичных данных в текстовое представление; поддерживаются следующие format значения: base64, escape, hex.

encode('123\000\001', 'base64')MTIzAAE=

функция decode ( string text, format text ) → bytea

Функция выполняет декодирование двоичных данных из текстового представления; поддерживаемые format значения аргумента совпадают с аргументами функции в функция encode.

decode('MTIzAAE=', 'base64')\x3132330001


Функции, функция encode и функция decode функции поддерживают следующие текстовые форматы:

base64 #

Данный base64 особенность формата заключается в том, что из RFC 2045, раздел 6.8. Согласно спецификации RFC, закодированные строки разбиваются на сегменты по 76 символов. Однако вместо маркера конца строки CRLF, используемого в MIME, в качестве разделителя строк применяется только символ новой строки. Данный функция decode функция игнорирует символы возврата каретки, перевода строки, пробела и табуляции. В противном случае генерируется ошибка, если функция decode переданы некорректные данные в формате base64 — включая случаи с неверным дополнением (padding) в конце строки.

escape #

Данный escape данный формат преобразует нулевые байты и байты с установленным старшим битом в восьмеричные escape-последовательности (\nnn), а также дублирует обратные косые черты. Другие значения байтов представляются в буквальном виде. Данный функция decode функция вызовет ошибку, если за символом обратной косой черты не следует ни вторая обратная косая черта, ни три восьмеричные цифры; она принимает другие значения байтов без изменений.

hex #

Данный hex данный формат представляет каждые 4 бита данных в виде одной шестнадцатеричной цифры 0 от f, при этом первым записывается старший разряд каждого байта. Эта функция encode функция выводит с a-f шестнадцатеричные цифры в нижнем регистре. Поскольку минимальной единицей данных является 8 бит, количество символов, возвращаемых функцией, всегда будет четным с помощью функция encode. Данный функция decode функция принимает a-f символы в верхнем или нижнем регистре. Ошибка генерируется в случае, функция decode когда переданы некорректные шестнадцатеричные данные — в том числе при передаче нечётного количества символов.

См. также агрегатную функцию string_agg в Раздел 2.6.21 и функции для работы с большими объектами в Раздел 4.2.4.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению