Partilhar via


SET_BIT (Transact SQL)

Aplica-se a: SQL Server 2022 (16.x) Azure SQL Database AzureSQL ManagedInstance SQL Analytics endpoint em Microsoft FabricWarehouse em Microsoft FabricSQL database em Microsoft Fabric

SET_BIT retorna expression_value deslocado pelo bit definido por bit_offset. O valor de bit assume como padrão 1 ou é definido por bit_value.

Transact-SQL convenções de sintaxe

Sintaxe

SET_BIT ( expression_value, bit_offset ) 
SET_BIT ( expression_value, bit_offset, bit_value )

Argumentos

expression_value

Qualquer inteiro ou expressão binária que não seja um objeto grande (LOB).

bit_offset

Qualquer inteiro.

Tipos de devolução

O mesmo tipo que expression_value.

O parâmetro bit_offset é usado para identificar o nth bit dos dados a serem definidos. Em tipos inteiros, o 0th bit é o bit menos significativo. Em tipos binários, o 0th bit é o bit menos significativo no byte mais à direita.

bit_value pode ser um inteiro ou um pouco. No entanto, os únicos valores válidos para bit_value são 1 e 0, independentemente do tipo de dados. SET_BIT lançará um erro se bit_value não for 1, 0 ou nulo.

SET_BIT lançará um erro se bit_offset for negativo ou maior do que o último bit no tipo de dados.

Comentários

Não há suporte para a funcionalidade de Consulta Distribuída para as funções de manipulação de bits no servidor vinculado ou consultas ad hoc (OPENQUERY).

Os tipos de dados de objeto grande (LOB) no Mecanismo de Banco de Dados podem armazenar dados que excedam 8.000 bytes. Esses tipos de dados armazenam dados em uma página de dados de de estouro de linha. Um LOB também engloba tipos de dados que armazenam dados em estruturas de página LOB dedicadas, que usam um ponteiro de texto ou imagem de referências em linha a páginas de dados LOB. Para obter mais informações sobre armazenamento de dados, consulte o guia de arquitetura Pages and extents.

As funções de manipulação de bits operam no tinyint , smallint, int, bigint, binary(n)e varbinary(n) tipos de dados. Não há suporte para tipos de dados de objeto grande (LOB), como varchar(max), nvarchar(max), varbinary(max), image, ntext, text, xmle common language runtime (CLR) BLOB.

Exemplos

Um. 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 muda seu terceiro bit (deslocamento 2) para 1, tornando-o 0100. Esse valor binário é então 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 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 0 e o resultado é retornado em formato hexadecimal.