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 Fabric Warehouse 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.