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

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

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

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

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

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

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

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

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

В данном разделе описываются функции и операторы для анализа и обработки битовых строк, то есть значений типов bit и bit varying. (Хотя в данных таблицах упоминается только тип bit , значения типа bit varying могут использоваться как взаимозаменяемые.) Для битовых строк поддерживаются обычные операторы сравнения, представленные в Таблица 2.6.1, а также операторы, приведенные в Таблица 2.6.14.

Таблица 2.6.14. Операторы битовых строк

Оператор

Описание

Примеры

bit || bitbit

Конкатенация

B'10001' || B'011'10001011

bit & bitbit

Побитовое И (AND) (аргументы должны иметь одинаковую длину)

B'10001' & B'01101'00001

bit | bitbit

Побитовое ИЛИ (OR) (аргументы должны иметь одинаковую длину)

B'10001' | B'01101'11101

bit # bitbit

Побитовое исключающее ИЛИ (XOR) (аргументы должны иметь одинаковую длину)

B'10001' # B'01101'11100

~ bitbit

Побитовое НЕ (NOT)

~ B'10001'01110

bit << integerbit

Побитовый сдвиг влево (длина строки при этом сохраняется)

B'10001' << 301000

bit >> integerbit

Побитовый сдвиг вправо (длина строки при этом сохраняется)

B'10001' >> 200100


Для битовых строк также доступны некоторые функции, применяемые к двоичным строкам, как показано в Таблица 2.6.15.

Таблица 2.6.15. Функции битовых строк

Функция

Описание

Примеры

bit_count ( bit ) → bigint

Данная функция возвращает количество установленных бит в битовой строке (известное также как «popcount»).

bit_count(B'10111')4

bit_length ( bit ) → integer

Данная функция возвращает количество бит в битовой строке.

bit_length(B'10111')5

длины ( bit ) → integer

Данная функция возвращает количество бит в битовой строке.

length(B'10111')5

octet_length ( bit ) → integer

Данная функция возвращает количество байт в битовой строке.

octet_length(B'1011111011')2

overlay ( бит bit PLACING newsubstring bit FROM start integer [ FOR count integer ] ) → bit

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

overlay(B'01010101010101010' placing B'11111' from 2 for 3)0111110101010101010

position ( substring bit IN бит bit ) → integer

Возвращает индекс первого вхождения указанной подстроки substring внутри бит, или ноль, если она отсутствует.

position(B'010' in B'000001101011')8

substring ( бит bit [ FROM start integer ] [ FOR count integer ] ) → bit

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

substring(B'110010111111' from 3 for 2)00

get_bit ( бит bit, n integer ) → integer

Извлекает n-й бит из битовой строки; первым (самым левым) битом считается бит с номером 0.

get_bit(B'101010101010101010', 6)1

set_bit ( бит bit, n integer, новое_значение integer ) → bit

Устанавливает n-й бит в битовую строку в новое_значение; первым (самым левым) битом считается бит с номером 0.

set_bit(B'101010101010101010', 6, 0)101010001010101010


Кроме того, целочисленные значения можно приводить к типу и из типа bit. Приведение целого числа к типу bit(n) копирует крайние правые n биты. При приведении целого числа к битовой строке, ширина которой больше разрядности самого числа, слева выполняется знаковое расширение. Примеры:

44::bit(10)                    0000101100
44::bit(3)                     100
cast(-44 as bit(12))           111111010100
'1110'::bit(4)::integer        14

Обратите внимание, что приведение просто к «bit» означает приведение к типу bit(1), и таким образом будет возвращен только младший значащий бит целого числа.

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

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