Megosztás a következőn keresztül:


Bitmanipulációs függvények

Vonatkozik a következőkre: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL analytics endpoint in Microsoft FabricWarehouse in Microsoft Fabric SQLdatabase in Microsoft Fabric

A bitmanipulációs függvények, mint például a mozgatás, visszakeresés (megszerzés), beállítás vagy egyetlen bitek számolása egy egész vagy bináris értéken belül, lehetővé teszik az adatok feldolgozását és tárolását, mint az egyes bitek.

Egy bitnek két értéke van (1 vagy 0, amelyek vagy , offtruefalsevagy ).on Egy bájt egy 8 bites sorozatból áll. Az SQL Server bitmanipulációs függvényei a bájt "ballegbal" bitjét kezelik a legnagyobb (a legjelentősebbnek). A bitmanipulációs függvényeknél a biteket jobbról balra számozzák, a bit 0 a legjobbra és a legkisebb, a bit 7 pedig a balra és a legnagyobb.

Például egy bináris sorozat 00000111 a szám 7tizedes megfelelője . Ezt kiszámolhatod a 2-es hatványokkal a következőként:

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

Ez a gyakorlatban azt jelenti, hogy míg az SQL Server ezt az értéket (bájtos visszafordított) értékként tárolja 11100000 , a bitmanipulációs függvények úgy kezelik, mintha az .00000111

Több bájttal nézve az első bájt (balról jobbra) a legnagyobb.

Az alábbi képek segítségével vizualizálhatod, hogyan értelmezik az SQL Server bitmanipulációs függvényei a bit- és bájtkifejezési értékeket, valamint a bit-eloszlásokat.

int

Diagram, amely int értéket mutat, ahol 4 bájt minden bájt fordított binárisságát jelöli balról jobbra.

smallint

Ábra, amely egy kis int értéket mutat, ahol az első bájt a 15-től 8-ig terjedő biteket, a második bájt pedig a 7-től 0-ig terjedő biteket jelöli.

Functions

Az SQL Serverben öt funkció érhető el a bitek kezelésére:

Mind az öt funkció tinyint, smallint, int, bigint, binary(n) és varbinary(n) adattípusokon működik.

A következő típusok nem támogatottak: varchar, nvarchar, image, ntext, text, xml és table.

Megjegyzések

A kezdeti megvalósításban a Distributed Query funkciók a bitmanipulációs funkciókhoz a linked serverben vagy ad hoc lekérdezésekben (OPENQUERY) nem lesz támogatva.