Partilhar via


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 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