SET_BIT (Transact SQL)
适用于: sql Server 2022 (16.x)
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric
Warehouse 中的 Microsoft Fabric Warehouse 中的 SQL 分析终结点
SET_BIT
返回由 bit_offset定义的位 expression_value 偏移量。 位值默认为 1,或由 bit_value 设置。
语法
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。 如果 bit_value 不是 1、0 或 null,则 SET_BIT 将引发错误。
如果 bit_offset 为负或大于数据类型中的最后一位,SET_BIT 将引发错误。
备注
不支持链接服务器或即席查询(OPENQUERY
)中位作函数的分布式查询功能。
数据库引擎中的大型对象 (LOB) 数据类型可以存储超过 8,000 字节的数据。 这些数据类型将数据存储在 行溢出 数据页上。 LOB 还包含将数据存储在专用 LOB 页面结构上的数据类型,这些结构使用对 LOB 数据页的行内引用的文本或图像指针。 有关数据存储的详细信息,请参阅 页面和盘区体系结构指南。
位作函数对 tinyint、smallint、int、bigint、binary(n)和 varbinary(n) 数据类型进行作。 不支持大型对象(LOB)数据类型,如 varchar(max)、nvarchar(max)、varbinary(max)、图像、ntext、文本、xml和公共语言运行时 (CLR) BLOB 类型)。
示例
A. 使用 SET_BIT 修改值
在此示例中,第 3 位(索引从零开始,位于偏移量 2 处)设置为 1
。
SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;
结果为 0x04
。 这是因为 的 expression_value 转换为 0x00
。 SET_BIT 将其第 3 位(偏移量 2)更改为 1,使其变为 0100
。 然后,以十六进制表示形式 4
返回此二进制值。
B. 使用 SET_BIT 修改具有自定义 bit_value 的值
在此示例中,bit_value 设置为 0 而不是默认值 1。
SELECT SET_BIT ( 0xabcdef, 0, 0 ) as VARBIN2;
结果为 0xABCDEE
。 expression_value 转换为二进制,即 。 SET_BIT 将第 1 位更改为 0,结果以十六进制格式返回。