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 FabricWarehouse no Microsoft Fabric
SET_BIT
retorna expression_value deslocamento 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
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
).
Tipos de dados lob (objeto grande) no Mecanismo de Banco de Dados podem armazenar dados que excedem 8.000 bytes. Esses tipos de dados armazenam dados em uma página de dados de estouro de linha. Um LOB também abrange tipos de dados que armazenam dados em estruturas de página lob dedicadas, que usam um texto ou um ponteiro de imagem de referências em linha para páginas de dados LOB. Para obter mais informações sobre o armazenamento de dados, consulte o guia de arquitetura Páginas e extensões.
As funções de manipulação de bit operam no minúsculo, smallint, int, bigint, binary(n)e varbinary(n). Tipos de dados lob (objeto grande), Não há suporte para varchar(max), nvarchar(max), varbinary(max), image, ntext, text, xmle tipos CLR (common language runtime).
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.