SET_BIT (Transact SQL)

Aplica-se a:SQL Server 2022 (16.x) Banco de Dados SQL do AzureInstância Gerenciada de SQL do AzurePonto de extremidade de análises SQL no Microsoft FabricWarehouse 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 0o bit é o bit menos significativo. Em tipos binários, o 0o 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.

Confira também