SET_BIT (Transact SQL)
van toepassing op: SQL Server 2022 (16.x)
Azure SQL Database
Azure SQL Managed Instance
SQL Analytics-eindpunt in Microsoft Fabric
Warehouse 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 0
th-bit de minst significante bit. In binaire typen is de 0
e 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.
Verwante inhoud
- LEFT_SHIFT (Transact SQL)
- RIGHT_SHIFT (Transact SQL)
- BIT_COUNT (Transact SQL)
- GET_BIT (Transact SQL)
- bitmanipulatiefuncties