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) に対する分散クエリ機能はサポートされません。
例
A. SET_BIT を使って値を変更する
この例では、3 番目のビット (オフセット 2 の位置、0 から始まるインデックス) が 1
に設定されます。
SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;
結果は 0x04
です。 これは、0x00
の expression_value が 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 進形式で返されます。