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

В этом разделе описываются функции и операторы, предназначенные для работы с битовыми строками, то есть с данными типов bit и bit varying. Помимо обычных операторов сравнения, с такими данными можно использовать операторы, перечисленные в Табл. 9-11. Заметьте, что операторы &, | и # работают только с двоичными строками одинаковой длины. Операторы побитового сдвига сохраняют длины исходных строк, как показано в примерах.

Таблица 9-11. Операторы для работы с битовыми строками

ОператорОписаниеПримерРезультат
|| конкатенация B'10001' || B'011' 10001011
& битовый AND B'10001' & B'01101' 00001
| битовый OR B'10001' | B'01101' 11101
# битовый XOR B'10001' # B'01101' 11100
~ битовый NOT ~ B'10001' 01110
<< битовый сдвиг влево B'10001' << 3 01000
>> битовый сдвиг вправо B'10001' >> 2 00100

Следующие функции языка SQL работают как с символьными, так и с битовыми строками: length, bit_length, octet_length, position, substring, overlay.

С битовыми и двоичными строками работают функции get_bit и set_bit. При работе с битовыми строками эти функции нумеруют биты слева направо и самый левый бит считается нулевым.

Кроме того, целые значения можно преобразовать в тип bit и обратно. Например:

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

Заметьте, что приведение к типу "bit" без длины будет означать приведение к bit(1), и в результате будет получен только один менее значащий бит числа.

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