Compartir vía


SET_BIT (Transact SQL)

Se aplica a: Sql Server 2022 (16.x) Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics en Microsoft FabricWarehouse en Microsoft Fabric

SET_BIT devuelve expression_value desplazamiento por el bit definido por bit_offset. El valor de bit predeterminado es 1 o bit_value lo define.

Convenciones de sintaxis de Transact-SQL

Sintaxis

SET_BIT ( expression_value, bit_offset ) 
SET_BIT ( expression_value, bit_offset, bit_value )

Argumentos

expression_value

Cualquier expresión entera o binaria que no sea un objeto grande (LOB).

bit_offset

Cualquier número entero.

Tipos de valores devueltos

El mismo tipo que expression_value.

El parámetro bit_offset se usa para identificar el enésimo bit de los datos a establecer. En los tipos enteros, el bit 0 es el bit menos significativo. En los tipos binarios, el bit 0 es el bit menos significativo del byte situado más a la derecha.

bit_value puede ser un entero o un bit. Sin embargo, los únicos valores válidos de bit_value son 1 y 0, independientemente del tipo de datos. SET_BIT producirá un error si bit_value no es 1 ni 0 ni null.

SET_BIT producirá un error si bit_offset es negativo o mayor que el último bit del tipo de datos.

Observaciones

No se admite la funcionalidad De consulta distribuida para las funciones de manipulación de bits dentro del servidor vinculado o las consultas ad hoc (OPENQUERY).

Los tipos de datos de objetos grandes (LOB) del motor de base de datos pueden almacenar datos que superen los 8000 bytes. Estos tipos de datos almacenan datos en una página de datos de desbordamiento de filas. Un LOB también abarca tipos de datos que almacenan datos en estructuras de páginas de LÍNEA de negocio dedicadas, que usan un texto o un puntero de imagen de referencias en fila a páginas de datos LOB. Para obtener más información sobre el almacenamiento de datos, consulte la guía de arquitectura de páginas y extensiones de .

Las funciones de manipulación de bits funcionan en el tinyint, smallint, int, bigint, binary(n), y varbinary(n) tipos de datos. No se admiten tipos de datos de objetos grandes (LOB), como varchar(max), nvarchar(max), varbinary(max), image, ntext, text, xmly tipos de BLOB de Common Language Runtime (CLR).

Ejemplos

A. Uso de SET_BIT para modificar un valor

En este ejemplo, el tercer bit (en el desplazamiento 2, índice basado en cero) se establece en 1.

SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;

El resultado es 0x04. Esto se debe a que el elemento expression_value de 0x00 se convierte en 0000. SET_BIT cambia su tercer bit (desplazamiento 2) a 1, convirtiéndolo en 0100. A continuación, este valor binario se devuelve como 4 en su representación hexadecimal.

B. Uso de SET_BIT para modificar un valor con un elemento bit_value personalizado

En este ejemplo, el elemento bit_value se establece en 0 en lugar del valor predeterminado de 1.

SELECT SET_BIT ( 0xabcdef, 0, 0 ) as VARBIN2;

El resultado es 0xABCDEE. El elemento expression_value se convierte en binario, que es 1010 1011 1100 1101 1110 1111. SET_BIT cambia el primer bit a 0 y el resultado se devuelve en formato hexadecimal.