SET_BIT (Transact SQL)
Aplica-se a: SQL Server 2022 (16.x) Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse no Microsoft Fabric
SET_BIT retorna expression_value deslocado pelo bit definido por bit_offset. O valor do bit é padronizado como 1 ou é definido por bit_value.
Convenções de sintaxe de Transact-SQL
Sintaxe
SET_BIT ( expression_value, bit_offset )
SET_BIT ( expression_value, bit_offset, bit_value )
Argumentos
expression_value
Qualquer expressão binária ou de número inteiro que não seja um LOB (objeto grande).
bit_offset
Qualquer número inteiro.
Tipos de retorno
O mesmo tipo que expression_value.
O parâmetro bit_offset é usado para identificar o nésimo bit dos dados a serem definidos. Em tipos inteiros, o 0
o bit é o bit menos significativo. Em tipos binários, o 0
o bit é o bit menos significativo no byte mais à direita.
bit_value pode ser um número inteiro ou um bit. No entanto, os únicos valores válidos para bit_value são 1 e 0, independentemente do tipo de dados. SET_BIT gerará um erro se bit_value não for 1 ou 0 ou nulo.
SET_BIT gerará um erro se bit_offset for negativo ou maior que o último bit no tipo de dados.
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).
Exemplos
a. Usar SET_BIT para modificar um valor
Neste exemplo, o terceiro bit (no deslocamento 2, índice baseado em zero) está sendo definido como 1
.
SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;
O resultado é 0x04
. Isso ocorre porque o expression_value de 0x00
é convertido em 0000
. SET_BIT altera seu terceiro bit (deslocamento 2) para 1, tornando-o 0100
. Esse valor binário é retornado como 4
na representação hexadecimal.
B. Use SET_BIT para modificar um valor com um bit_value personalizado
Neste exemplo, o bit_value está sendo definido como 0 em vez do padrão de 1.
SELECT SET_BIT ( 0xabcdef, 0, 0 ) as VARBIN2;
O resultado é 0xABCDEE
. O expression_value é convertido em binário, que é 1010 1011 1100 1101 1110 1111
. SET_BIT altera o primeiro bit para um 0, e o resultado é retornado no formato hexadecimal.