SET_BIT (Transact SQL)
適用対象: SQL Server 2022 (16.x)
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric のSQL 分析エンドポイント
Microsoft Fabric のウェアハウス
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) データ型で動作します。 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
です。 これは、 の 0x00
が 0000
に変換されるためです。 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 進形式で返されます。