Udostępnij za pośrednictwem


SET_BIT (Transact SQL)

Dotyczy: sql Server 2022 (16.x) Azure SQL Databasepunkt końcowy analizy SQLSQL w usłudze Microsoft Fabric

SET_BIT zwraca przesunięcie expression_value przez bit zdefiniowany przez bit_offset. Wartość bitowa jest domyślnie równa 1 lub jest ustawiana przez bit_value.

Transact-SQL konwencje składni

Składnia

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

Argumenty

expression_value

Każda liczba całkowita lub wyrażenie binarne, które nie jest dużym obiektem (LOB).

bit_offset

Dowolna liczba całkowita.

Typy zwracane

Ten sam typ co expression_value.

Parametr bit_offset służy do identyfikowania nbitu danych do ustawienia. W typach liczb całkowitych bit 0jest najmniej znaczącym bitem. W typach binarnych bit 0jest najmniej znaczącym bitem w bajtach po prawej stronie.

bit_value może być liczbą całkowitą lub bitową. Jednak jedyne prawidłowe wartości dla bit_value to 1 i 0, niezależnie od typu danych. SET_BIT zgłosi błąd, jeśli bit_value nie ma wartości 1 lub 0 lub null.

SET_BIT zgłosi błąd, jeśli bit_offset jest ujemna lub większa niż ostatni bit w typie danych.

Uwagi

Funkcje zapytania rozproszonego dla funkcji manipulowania bitami na serwerze połączonym lub zapytaniach ad hoc (OPENQUERY) nie są obsługiwane.

Duże typy danych obiektów (LOB) w a aparatze bazy danych mogą przechowywać dane, które przekraczają 8000 bajtów. Te typy danych przechowują dane na stronie danych przepełnienie wiersza. LoB obejmuje również typy danych, które przechowują dane w dedykowanych strukturach stron BIZNESOWYCH, które używają tekstu lub wskaźnika obrazu odwołań w wierszu do stron danych LOB. Aby uzyskać więcej informacji na temat magazynu danych, zobacz przewodnik dotyczący architektury Pages i zakresów.

Funkcje manipulowania bitami działają na tinyint, smallint, int, bigint, binary(n)i varbinary(n) typów danych. Duże typy danych obiektów (LOB), takie jak varchar(max), nvarchar(max), varbinary(max), obraz, ntext, tekst, xmli typy obiektów BLOB środowiska uruchomieniowego języka wspólnego (CLR) nie są obsługiwane.

Przykłady

A. Modyfikowanie wartości przy użyciu SET_BIT

W tym przykładzie trzeci bit (z przesunięciem 2, indeksem opartym na zerach) jest ustawiany na wartość 1.

SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;

Wynik jest 0x04. Dzieje się tak dlatego, że expression_value0x00 jest konwertowana na 0000. SET_BIT zmienia trzeci bit (przesunięcie 2) na 1, co czyni go 0100. Ta wartość binarna jest następnie zwracana jako 4 w reprezentacji szesnastkowej.

B. Modyfikowanie wartości przy użyciu bit_value niestandardowej za pomocą SET_BIT

W tym przykładzie bit_value jest ustawiona na wartość 0 zamiast wartości domyślnej 1.

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

Wynik jest 0xABCDEE. expression_value jest konwertowany na plik binarny, który jest 1010 1011 1100 1101 1110 1111. SET_BIT zmienia pierwszy bit na 0, a wynik jest zwracany w formacie szesnastkowym.

  • LEFT_SHIFT (Transact SQL)
  • RIGHT_SHIFT (Transact SQL)
  • BIT_COUNT (Transact SQL)
  • GET_BIT (Transact SQL)
  • funkcje manipulowania bitami