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, а результат возвращается в шестнадцатеричном формате.