次の方法で共有


SET_BIT (Transact SQL)

適用対象: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceMicrosoft 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) 内のビット操作関数の分散クエリ機能はサポートされていません。

データベース エンジンのラージ オブジェクト (LOB) データ型は、8,000 バイトを超えるデータを格納できます。 これらのデータ型は、行オーバーフロー データ ページにデータを格納します。 LOB には、LOB データ ページへの行内参照のテキストまたはイメージ ポインターを使用する、専用の LOB ページ構造にデータを格納するデータ型も含まれます。 データ ストレージの詳細については、「ページとエクステントのアーキテクチャ ガイド」を参照してください。

ビット操作関数は、tinyintsmallintintbigintbinary(n)、および varbinary(n) データ型で動作します。 varchar(max)nvarchar(max)varbinary(max)イメージntextテキストxml、共通言語ランタイム (CLR) BLOB 型などのラージ オブジェクト (LOB) データ型はサポートされていません。

A. SET_BIT を使って値を変更する

この例では、3 番目のビット (オフセット 2 の位置、0 から始まるインデックス) が 1 に設定されます。

SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;

結果は 0x04です。 これは、0x000000 に変換されるためです。 SET_BIT は、その 3 番目のビット (オフセット 2) を 1 に変更して、0100 にします。 その後、このバイナリ値は、16 進表現の 4 として返されます。

B. SET_BIT を使ってカスタムの bit_value で値を変更する

この例では、bit_value は既定値の 1 ではなく 0 に設定されます。

SELECT SET_BIT ( 0xabcdef, 0, 0 ) as VARBIN2;

結果は 0xABCDEEです。 expression_value はバイナリ (1010 1011 1100 1101 1110 1111) に変換されます。 SET_BIT は最初のビットを 0 に変更し、結果は 16 進形式で返されます。