Dela via


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 0th biten den minst betydande biten. I binära typer är den 0th 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.