Partilhar via


Funções de manipulação de bits

Aplica-se a: SQL Server 2022 (16.x) Azure SQL Database AzureSQL ManagedInstance SQL Analytics endpoint em Microsoft FabricWarehouse em Microsoft FabricSQL database em Microsoft Fabric

Funções de manipulação de bits, como mover, recuperar (obter), definir ou contar bits individuais dentro de um valor inteiro ou binário, permitem-lhe processar e armazenar dados de forma mais eficiente do que com bits individuais.

Um bit tem dois valores (1 ou 0, que representam on ou off, ou true ou false). Um byte é composto por uma sequência de 8 bits. As funções de manipulação de bits no SQL Server tratam o bit "mais à esquerda" de um byte como o maior (o mais significativo). Para as funções de manipulação de bits, os bits são numerados da direita para a esquerda, sendo o bit 0 o mais à direita e o menor e o bit 7 o mais à esquerda e maior.

Por exemplo, uma sequência binária de 00000111 é o equivalente decimal do número 7. Pode calcular isto usando potências de 2 da seguinte forma:

00000111 = (2^2 + 2^1 + 2^0 = 4 + 2 + 1 = 7)

Isto significa na prática que, enquanto o SQL Server armazena este valor como 11100000 (byte-reversed), as funções de manipulação de bits tratam-no como se fosse 00000111.

Ao olhar para múltiplos bytes, o primeiro byte (lendo da esquerda para a direita) é o maior.

Pode usar as imagens seguintes para visualizar como as funções de manipulação de bits do SQL Server interpretam valores de expressões de bits e bytes e deslocamentos de bits.

int

Diagrama mostrando um valor int onde 4 bytes representam o binário invertido de cada byte da esquerda para a direita.

smallint

Diagrama mostrando um valor de int pequeno onde o primeiro byte representa os bits 15 a 8, e o segundo byte representa os bits 7 a 0.

Funções

Existem cinco funções disponíveis para manipular bits no SQL Server:

As cinco funções destinam-se a operar nos tipos de dados tinyint, smallint, int, bigint, binary(n) e varbinary(n).

Os seguintes tipos não são suportados: varchar, nvarchar, image, ntext, text,xml e table.

Observações

Na implementação inicial, a funcionalidade de Consulta Distribuída para as funções de manipulação de bits dentro do servidor ligado ou consultas ad hoc (OPENQUERY) não será suportada.