Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Относится к: SQL Server 2022 (16.x)
Azure SQL Database
AzureSQL Managed Instance
SQL analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in 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 отрицательное или больше последнего бита в типе данных.
Замечания
Функциональность распределённых запросов для функций управления битами внутри связанного сервера или ad hoc запросов (OPENQUERY) не поддерживается.
Типы данных больших объектов (LOB) в ядре СУБД могут хранить данные, превышающие 8000 байт. Эти типы данных хранят данные на странице данных с переполнением строк . LOB также включает типы данных, которые хранят данные на выделенных структурах страниц LOB, которые используют текстовый или изображенный указатель с ссылками в строке на страницы данных LOB. Для получения дополнительной информации о хранении данных смотрите руководство по архитектуре Pages and extents.
Функции управления битами работают с типами данных tinyint, smallint, int, bigint, binary(n) и varbinary(n). Типы данных больших объектов (LOB), такие как varchar(max), nvarchar(max),varbinary(max), image, ntext, text, xml и типы BLOB на основе общего языка (CLR), не поддерживаются.
Примеры
А. Изменение значения с помощью SET_BIT
В этом примере для третьего бита (со смещением 2 и отсчитываемым от нуля индексом) задано значение 1.
SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;
Результат 0x04. Это связано с тем, что expression_value0x00 преобразуется в 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, а результат возвращается в шестнадцатеричном формате.