Funciones de manipulación de bits

Se aplica a: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstancePunto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Las funciones de manipulación de bits, como mover, recuperar (obtener), establecer o contar bits individuales en un valor entero o binario, permiten procesar y almacenar datos de una forma más eficaz que con bits individuales.

Un bit tiene dos valores (1 o 0, que representan on o off, o true o false). Un byte se compone de una secuencia de 8 bits. Las funciones de manipulación de bits en SQL Server tratan el bit situado "más a la izquierda" en un byte como el más grande (el más significativo). Para las funciones de manipulación de bits, los bits se numeran de derecha a izquierda, donde el bit 0 está situado más a la derecha y es el más pequeño, y el bit 7 está situado más a la izquierda y es el más grande.

Por ejemplo, una secuencia binaria de 00000111 es el equivalente decimal del número 7. Esto se puede calcular con potencias de 2 de la siguiente manera:

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

Lo que esto significa en la práctica es que, aunque SQL Server almacena este valor como 11100000 (byte invertido), las funciones de manipulación de bits lo tratarán como si fuera 00000111.

Al examinar varios bytes, el primer byte (leyendo de izquierda a derecha) es el mayor.

Puede usar las siguientes imágenes para visualizar la forma en la que las funciones de manipulación de bits de SQL Server interpretan los valores de expresión de bits y bytes, y los desplazamientos 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.

Functions

Hay cinco funciones disponibles para la manipulación de bits en SQL Server:

Las cinco funciones están diseñadas para operar con tipos de datos tinyint, smallint, int, bigint, binary(n) y varbinary(n).

No se admiten los siguientes tipos: varchar, nvarchar, image, ntext, text, xml y table.

Observaciones

En la implementación inicial, no se admitirá la funcionalidad de consulta distribuida para las funciones de manipulación de bits en el servidor vinculado ni en consultas ad hoc (OPENQUERY).