Funções de manipulação de bits

Aplica-se a:SQL Server 2022 (16.x) Banco de Dados SQL do AzureInstância Gerenciada de SQL do AzurePonto de extremidade de análises SQL no Microsoft FabricWarehouse 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

Diagram showing an int value where 4 bytes represent the reversed binary of each byte from left to right.

smallint

Diagram showing a small int value where the first byte represents bits 15 to 8, and the second byte represents bits 7 to 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).