次の方法で共有


binary と varbinary (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric プレビューの SQL データベース

固定長または可変長のバイナリ データ型です。

Arguments

binary [ ( n ) ]

n バイトの固定長の binary データです。ここで、n は 1 から 8,000 の値になります。 ストレージのサイズは n バイトです。

varbinary [ ( n | max ) ]

可変長 binary データ。 n には 1 ~ 8,000 の値を指定できます。 max 記憶域の最大サイズが 2 であることを示します。 ^ 31-1 バイトです。 格納サイズは、入力したデータの実際の長さ + 2 バイトとなります。 入力するデータの長さは 0 バイトでもかまいません。 varbinary の ANSI SQL シノニム binary 可変です。

Remarks

データ定義または変数宣言ステートメントで n を指定しないと、既定の長さは 1 になります。 関数で nCAST を指定しないと、既定の長さは 30 になります。

Data type 次の場合に使用
binary 列データ エントリのサイズが一定である。
varbinary 列データ エントリのサイズが大幅に変化する。
varbinary(max) 列データ エントリのサイズが 8,000 バイトを超える。

binary および varbinary 型データの変換

データが文字列データ型からデータ長の異なる binary または varbinary データ型に変換される場合、SQL Server によりデータの右側の桁が埋め込まれるか、切り捨てられます。 文字列データ型は次のとおりです。

  • char
  • varchar
  • nchar
  • nvarchar
  • binary
  • varbinary
  • text
  • ntext
  • image

他のデータ型が変換される場合 binary または varbinary, 、データが埋め込まれるか、左側に切り捨てられます。 桁の埋め込みには 16 進数の 0 が使用されます。

データの binary データ型と varbinary データ型への変換は、データ間を移動するもっとも簡単な方法がbinary データである場合に便利です。 ある時点で、値の型をサイズが十分に大きなバイナリ値に変換し、その後、元に戻すことがあります。 両方の変換が同じバージョンの SQL Server で行われる場合、この変換では常に結果的に同じ値が生成されます。 値の 2 進表現は、SQL Server のバージョン間で異なる場合があります。

intsmallinttinyintbinary または varbinary に変換できます。 binary 型の値を再度 integer 型の値に戻した場合、切り捨てが行われていると、この値は元の integer の値とは同じになりません。 たとえば、次の SELECT ステートメントは整数値 123456 をバイナリ値 0x0001e240 として格納することを示しています。

SELECT CAST( 123456 AS BINARY(4) );

ただし、次の SELECT ステートメントは、変換先の binary 型が小さすぎて値全体を保持できない場合は、左側の桁が暗黙的に切り捨てられ、同じ数値が 0xe240 として格納されることを示します。

SELECT CAST( 123456 AS BINARY(2) );

次のバッチは、暗黙的な切り捨てが算術演算に影響を与えることがあり、その場合でもエラーが生成されないことを示します。

DECLARE @BinaryVariable2 BINARY(2);
  
SET @BinaryVariable2 = 123456;
SET @BinaryVariable2 = @BinaryVariable2 + 1;
  
SELECT CAST( @BinaryVariable2 AS INT);
GO

最終的な値は 57921 ではなく 123457 になります。

Note

任意のデータ型と binary データ型の間の変換は、SQL Server のバージョン間で同じであるとは限りません。

Limitations

現在、Microsoft Fabric では varbinary(n) のみがサポートされます。 binary データ型と varbinary(max) データ型はサポートされません。

See also