Share via


SET_BIT (Transact SQL)

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

SET_BIT devuelve el desplazamiento expression_value del 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

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

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.

Vea también