SET_BIT (Transact SQL)
gäller för: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL-analysslutpunkt i Microsoft FabricWarehouse i Microsoft Fabric
SET_BIT
returnerar expression_value förskjutning av den bit som definieras av bit_offset. Bitvärdet är som standard 1 eller anges av bit_value.
Transact-SQL syntaxkonventioner
Syntax
SET_BIT ( expression_value, bit_offset )
SET_BIT ( expression_value, bit_offset, bit_value )
Argument
expression_value
Alla heltal eller binära uttryck som inte är ett stort objekt (LOB).
bit_offset
Alla heltal.
Returtyper
Samma typ som expression_value.
Parametern bit_offset används för att identifiera nden databit som ska anges. I heltalstyper är den 0
th biten den minst betydande biten. I binära typer är den 0
th biten den minst betydande biten i den högra byte.
bit_value kan vara ett heltal eller lite. De enda giltiga värdena för bit_value är dock 1 och 0, oavsett datatyp. SET_BIT utlöser ett fel om bit_value inte är 1 eller 0 eller null.
SET_BIT utlöser ett fel om bit_offset är negativ eller större än den sista biten i datatypen.
Anmärkningar
Funktioner för distribuerad fråga för bitmanipuleringsfunktioner i länkad server eller ad hoc-frågor (OPENQUERY
) stöds inte.
Stora objektdatatyper (LOB) i databasmotorn kan lagra data som överstiger 8 000 byte. Dessa datatyper lagrar data på en rad-overflow datasida. En LOB omfattar även datatyper som lagrar data på dedikerade LOB-sidstrukturer, som använder en text eller en bildpekare med referenser på rad till LOB-datasidor. Mer information om datalagring finns i arkitekturguiden Sidor och omfattningar.
Bitmanipuleringsfunktionerna fungerar på tinyint, smallint, int, bigint, binary(n), och varbinary(n) datatyper. Stora objektdatatyper (LOB), till exempel varchar(max), nvarchar(max), varbinary(max), image, ntext, text, xmloch CLR-blobtyper (Common Language Runtime) stöds inte.
Exempel
A. Använd SET_BIT för att ändra ett värde
I det här exemplet anges den tredje biten (vid förskjutning 2, nollbaserat index) till 1
.
SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;
Resultatet är 0x04
. Det beror på att expression_value för 0x00
konverteras till 0000
. SET_BIT ändrar sin tredje bit (förskjutning 2) till 1, vilket gör att den 0100
. Det här binära värdet returneras sedan som 4
i hexadecimal representation.
B. Använd SET_BIT för att ändra ett värde med en anpassad bit_value
I det här exemplet anges bit_value till 0 i stället för standardvärdet 1.
SELECT SET_BIT ( 0xabcdef, 0, 0 ) as VARBIN2;
Resultatet är 0xABCDEE
.
expression_value konverteras till binärt, vilket är 1010 1011 1100 1101 1110 1111
. SET_BIT ändrar den första biten till 0 och resultatet returneras i hexadecimalt format.