Udostępnij za pomocą


Funkcje manipulowania bitami

Dotyczy do: SQL Server 2022 (16.x) Azure SQL Database AzureSQL Managed InstanceSQL Analytics endpoint in Microsoft FabricWarehouse in Microsoft FabricSQL database in Microsoft Fabric

Funkcje manipulacji bitami, takie jak przenoszenie, pobieranie (pobieranie), ustawianie lub liczenie pojedynczych bitów w obrębie wartości całkowitej lub binarnej, pozwalają na szybsze przetwarzanie i przechowywanie danych niż pojedyncze bity.

Bit ma dwie wartości (1 lub 0, które reprezentują on lub off, lub true lub false). Bajt składa się z sekwencji 8 bitów. Funkcje manipulacji bitami w SQL Server traktują "najbardziej lewy" bit w bajcie jako największy (najważniejszy). W funkcjach manipulacji bitami bity są numerowane od prawej do lewej, przy czym bit 0 to najbardziej prawy, najmniejszy, a bit 7 to najbardziej lewy i największy.

Na przykład ciąg binarny jest 00000111 dziesiętnym odpowiednikiem liczby 7. Można to obliczyć za pomocą potęg liczby 2 w następujący sposób:

00000111 = (2^2 + 2^1 + 2^0 = 4 + 2 + 1 = 7)

W praktyce oznacza to, że podczas gdy SQL Server przechowuje 00000111tę wartość jako 11100000 (bajt-odwrócony), funkcje manipulacji bitami będą traktować ją tak, jakby była .

Patrząc na wiele bajtów, pierwszy bajt (czytany od lewej do prawej) jest największy.

Możesz użyć poniższych obrazów, aby zobrazować, jak funkcje manipulacji bitami SQL Servera interpretują wartości wyrażeń bitowych i bajtów oraz przesunięcia bitów.

int

Diagram przedstawiający wartość int, gdzie 4 bajty reprezentują odwrócony binarny plik każdego bajtu od lewej do prawej.

smallint

Diagram przedstawiający małą wartość int, gdzie pierwszy bajt reprezentuje bity od 15 do 8, a drugi bajt to bity od 7 do 0.

Functions

W SQL Serverze dostępnych jest pięć funkcji do manipulowania bitami:

Wszystkie pięć funkcji jest przeznaczonych do pracy na typach danych tinyint, smallint, int, bigint, binarny(n) i varbinary(n).

Nie obsługiwane są następujące typy: varchar, nvarchar, image, ntext, text, xml oraz table.

Uwagi

W początkowej implementacji funkcjonalność Distributed Query dla funkcji manipulacji bitami w serwerze połączonym lub zapytaniach ad hoc (OPENQUERY) nie będzie obsługiwana.