SET_BIT (Transact SQL)

适用于:SQL Server 2022 (16.x)Azure SQL 数据库Azure SQL 托管实例Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

SET_BIT 通过 bit_offset 定义的位返回 expression_value 偏移量。 位值默认为 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。 如果 bit_value 不是 1、0 或 null,则 SET_BIT 将引发错误。

如果 bit_offset 为负或大于数据类型中的最后一位,SET_BIT 将引发错误。

备注

在初始实现中,链接服务器中的位操作函数的分布式查询功能或即席查询 (OPENQUERY) 不受支持。

示例

A. 使用 SET_BIT 修改值

在此示例中,第 3 位(索引从零开始,位于偏移量 2 处)设置为 1

SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;

结果为 0x04。 这是因为 0x00 的 expression_value 转换为 0000。 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 转换为二进制,即 1010 1011 1100 1101 1110 1111。 SET_BIT 将第 1 位更改为 0,结果以十六进制格式返回。

请参阅