Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к: 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, а результат возвращается в шестнадцатеричном формате.