SET_BIT (Transact SQL)

Область применения: SQL Server 2022 (16.x) База данных SQL Azure Управляемый экземпляр SQL Azure конечную точку аналитики SQL в хранилище Microsoft Fabric в Microsoft Fabric

SET_BIT возвращает смещение expression_value бита, определенного bit_offset. Значение бита по умолчанию равно 1 или задается значением bit_value.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

expression_value

Любое целочисленное или двоичное выражение, которое не является большим объектом (LOB).

bit_offset

Любое целое число.

Типы возвращаемых данных

Тип, совпадающий с типом выражения expression_value.

Параметр bit_offset используется для идентификации n-го бита данных, который нужно задать. В целочисленных типах 0 бит является наименее значимым битом. В двоичных типах 0 бит является наименее значимым битом в крайнем правом байте.

bit_value может быть целым числом или битом. Однако единственными допустимыми значениями для bit_value являются 1 и 0 независимо от типа данных. SET_BIT выдает ошибку, если bit_value не равно 1, 0 или null.

SET_BIT выдает ошибку, если значение bit_offset отрицательное или больше последнего бита в типе данных.

Замечания

В начальной реализации функциональность распределенных запросов для функций поразрядных операций на связанном сервере или в специальных запросах (OPENQUERY) не будет поддерживаться.

Примеры

А. Изменение значения с помощью SET_BIT

В этом примере для третьего бита (со смещением 2 и отсчитываемым от нуля индексом) задано значение 1.

SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;

Результат 0x04. Это связано с тем, что expression_value 0x00 преобразуется в 0000. SET_BIT изменяет третий бит (смещение 2) на 1, что делает его 0100. Затем это двоичное значение возвращается как 4 в шестнадцатеричном представлении.

B. Изменение значения с пользовательским bit_value с помощью SET_BIT

В этом примере для bit_value задано значение 0, а не 1, как по умолчанию.

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

Результат 0xABCDEE. expression_value преобразуется в двоичный файл, то есть 1010 1011 1100 1101 1110 1111. SET_BIT изменяет первый бит на 0, а результат возвращается в шестнадцатеричном формате.

См. также