Esta seção descreve as funções e operadores disponíveis para examinar e manipular cadeias de bits, ou seja, valores dos tipos bit e bit varying. Além dos operadores usuais de comparação, podem ser utilizados os operadores mostrados na Tabela 9-12. Devem ser do mesmo comprimento as cadeias de bits operandos de &, | e # . Ao ser feito o deslocamento de bits é preservado o comprimento original da cadeia de bits, conforme mostrado nos exemplos.
Tabela 9-12. Operadores para cadeias de bits
Operador | Descrição | Exemplo | Resultado |
---|---|---|---|
|| | concatenação | B'10001' || B'011' | 10001011 |
& | AND bit a bit | B'10001' & B'01101' | 00001 |
| | OR bit a bit | B'10001' | B'01101' | 11101 |
# | XOR bit a bit | B'10001' # B'01101' | 11100 |
~ | NOT bit a bit | ~ B'10001' | 01110 |
<< | deslocamento à esquerda bit a bit | B'10001' << 3 | 01000 |
>> | deslocamento à direita bit a bit | B'10001' >> 2 | 00100 |
As seguintes funções do padrão SQL funcionam em cadeias de bits, assim como em cadeias de caracteres: length, bit_length, octet_length, position, substring.
Além disso, é possível converter valores inteiros de e para o tipo bit. Alguns exemplos:
44::bit(10) 0000101100 44::bit(3) 100 cast(-44 as bit(12)) 111111010100 '1110'::bit(4)::integer 14
Deve ser observado que converter para apenas um "bit" significa converter para bit(1) e, portanto, o resultado será apenas o bit menos significativo do inteiro.
Nota: Antes do PostgreSQL 8.0, a conversão de um inteiro para bit(n) copiava os n bits mais à esquerda do inteiro, enquanto agora copia os n bits mais à direita. Também, converter um inteiro para uma cadeia de bits mais larga que o próprio inteiro, estende o sinal para à esquerda.