Partilhar via


Funções de manipulação de bits

Aplica-se a: SQL Server 2022 (16.x) Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse no Microsoft Fabric

Funções de manipulação de bits, como mover, recuperar (obter), definir ou contar bits únicos dentro de um valor inteiro ou binário, permitem processar e armazenar dados com mais eficiência 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" em 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 o maior.

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

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

O que isso significa na prática é que, embora o SQL Server armazene esse valor como 11100000 (invertido por bytes), as funções de manipulação de bits o tratarão como se fosse 00000111.

Ao examinar vários bytes, o primeiro byte (lendo da esquerda para a direita) é o maior.

Você pode usar as imagens a seguir para visualizar como as funções de manipulação de bits do SQL Server interpretam valores de expressão de bit e byte e deslocamentos de bits.

int

Diagrama que mostra um valor inteiro no qual 4 bytes representam o binário invertido de cada byte da esquerda para a direita.

smallint

Diagrama que mostra um pequeno valor de int no qual o primeiro byte representa os bits 15 a 8, e o segundo byte representa os bits 7 a 0.

Funções

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

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

Não há suporte para os seguintes tipos: varchar, nvarchar, image, ntext, text, xml e table.

Comentários

Na implementação inicial, não haverá suporte para a funcionalidade de Consulta Distribuída para as funções de manipulação de bits no servidor vinculado ou em consultas ad hoc (OPENQUERY).