Delen via


SET_BIT (Transact SQL)

van toepassing op: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL Analytics-eindpunt in Microsoft FabricWarehouse in Microsoft Fabric

SET_BIT retourneert expression_value offset door de bit die is gedefinieerd door bit_offset. De bitwaarde wordt standaard ingesteld op 1 of wordt ingesteld door bit_value.

Transact-SQL syntaxisconventies

Syntaxis

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

Argumenten

expression_value

Een geheel getal of binaire expressie die geen groot object (LOB) is.

bit_offset

Elk geheel getal.

Retourtypen

Hetzelfde type als expression_value.

De parameter bit_offset wordt gebruikt om de nde te instellen bit van de gegevens te identificeren. In gehele getallen is de 0th-bit de minst significante bit. In binaire typen is de 0e bit de minst significante bit in de meest rechtse byte.

bit_value kan een geheel getal of een bit zijn. De enige geldige waarden voor bit_value zijn echter 1 en 0, ongeacht het gegevenstype. SET_BIT genereert een fout als bit_value niet 1 of 0 of null is.

SET_BIT genereert een fout als bit_offset negatief of groter is dan de laatste bit in het gegevenstype.

Opmerkingen

Gedistribueerde queryfunctionaliteit voor de bitbewerkingsfuncties binnen gekoppelde server of ad-hocquery's (OPENQUERY) worden niet ondersteund.

Grote objectgegevenstypen (LOB) in de database-engine kunnen gegevens opslaan die groter zijn dan 8000 bytes. Met deze gegevenstypen worden gegevens opgeslagen op een rij-overlooppagina gegevenspagina. Een LOB omvat ook gegevenstypen waarin gegevens worden opgeslagen in toegewezen LOB-paginastructuren, die een tekst- of afbeeldingsaanwijzer van in-rijverwijzingen naar LOB-gegevenspagina's gebruiken. Zie de architectuurhandleiding voor Pagina's en gebieden voor meer informatie over gegevensopslag.

De bitmanipulatiefuncties werken op de tinyint, smallint, int, bigint, binary(n)en varbinary(n) gegevenstypen. Grote objectgegevenstypen (LOB), zoals varchar(max), nvarchar(max), varbinary(max), afbeelding, ntext, tekst, XML-en CLR-blobtypen (Common Language Runtime) worden niet ondersteund.

Voorbeelden

Een. Een waarde wijzigen met SET_BIT

In dit voorbeeld wordt de derde bit (bij offset 2, op nul gebaseerde index) ingesteld op 1.

SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;

Het resultaat is 0x04. Dit komt doordat de expression_value van 0x00 wordt geconverteerd naar 0000. SET_BIT de derde bit (offset 2) wijzigt in 1, waardoor deze 0100. Deze binaire waarde wordt vervolgens geretourneerd als 4 in hexadecimale weergave.

B. Gebruik SET_BIT om een waarde te wijzigen met een aangepaste bit_value

In dit voorbeeld wordt de bit_value ingesteld op 0 in plaats van de standaardwaarde 1.

SELECT SET_BIT ( 0xabcdef, 0, 0 ) as VARBIN2;

Het resultaat is 0xABCDEE. De expression_value wordt geconverteerd naar binair, dat is 1010 1011 1100 1101 1110 1111. SET_BIT de eerste bit wijzigt in een 0 en het resultaat wordt geretourneerd in hexadecimale indeling.