Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к: 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
BIT_COUNT берёт один параметр и возвращает количество бит, равных 1 в этом параметре как bigint-тип .
Соглашения о синтаксисе Transact-SQL
Синтаксис
BIT_COUNT ( expression_value )
Аргументы
expression_value
Любое целочисленное или двоичное выражение, не являющееся крупным объектом (LOB).
Типы возвращаемых данных
bigint
BIT_COUNT не заклинает, не считая количество битов. Это связано с тем, что одно и то же число может иметь разное количество единиц в двоичном представлении в зависимости от типа данных.
Например SELECT BIT_COUNT (CAST (-1 AS SMALLINT)) , и SELECT BIT_COUNT (CAST (-1 AS INT)) возвращают 16 и 32 соответственно. Это задумано, поскольку бинарное представление может -1 иметь разное количество битов 1 в зависимости от типа данных.
Замечания
Функциональность распределённых запросов для функций управления битами внутри связанного сервера или 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), не поддерживаются.
Примеры
А. Вычисление BIT_COUNT в двоичном значении
В следующем примере вычисляется число битов, значение которых равно 1 в двоичном значении.
SELECT BIT_COUNT(0xabcdef) AS Count;
Результат 17. Это связано с тем, что 0xabcdef в двоичном файле — это 1010 1011 1100 1101 1110 1111, и есть 17 битов со значением равным 1.
B. Вычисление BIT_COUNT в целочисленном виде
В следующем примере вычисляется число битов, значение которых равно 1, в целочисленном значении.
SELECT BIT_COUNT(17) AS Count;
Результат 2. Это связано с тем, что 17 в двоичном файле — это 0001 0001, и есть только 2 бита со значением равным 1.