binary と varbinary (Transact-SQL)binary and varbinary (Transact-SQL)

適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

固定長または可変長のbinary データ型です。Binary data types of either fixed length or variable length.

引数Arguments

binary [ ( n ) ]。長さ n バイトの固定長のbinary データです。n は 1 ~ 8,000 の値になります。binary [ ( n ) ] Fixed-length binary data with a length of n bytes, where n is a value from 1 through 8,000. ストレージのサイズは n バイトです。The storage size is n bytes.

varbinary [ ( n | max) ] 可変長のbinary データ。varbinary [ ( n | max) ] Variable-length binary data. n には 1 ~ 8,000 の値を指定できます。n can be a value from 1 through 8,000. max 記憶域の最大サイズが 2 であることを示します。 ^ 31-1 バイトです。max indicates that the maximum storage size is 2^31-1 bytes. 格納サイズは、入力したデータの実際の長さ + 2 バイトとなります。The storage size is the actual length of the data entered + 2 bytes. 入力するデータの長さは 0 バイトでもかまいません。The data that is entered can be 0 bytes in length. varbinary の ANSI SQL シノニム binary 可変です。The ANSI SQL synonym for varbinary is binary varying.

RemarksRemarks

データ定義または変数宣言ステートメントで n を指定しないと、既定の長さは 1 になります。The default length is 1 when n isn't specified in a data definition or variable declaration statement. CAST 関数で n を指定しないと、既定の長さは 30 になります。When n isn't specified with the CAST function, the default length is 30.

データ型Data type 次の場合に使用Use when ...
binarybinary 列データ エントリのサイズが一定である。the sizes of the column data entries are consistent.
varbinaryvarbinary 列データ エントリのサイズが大幅に変化する。the sizes of the column data entries vary considerably.
varbinary(max)varbinary(max) 列データ エントリのサイズが 8,000 バイトを超える。the column data entries exceed 8,000 bytes.

binary 型データと varbinary 型データの変換Converting binary and varbinary data

データが文字列データ型からデータ長の異なる binary データ型または varbinary データ型に変換される場合、SQL ServerSQL Server によりデータの右側の桁が埋め込まれるか、切り捨てられます。When converting data from a string data type to a binary or varbinary data type of unequal length, SQL ServerSQL Server pads or truncates the data on the right. 文字列データ型は次のとおりです。These string data types are:

  • charchar
  • varcharvarchar
  • ncharnchar
  • nvarcharnvarchar
  • binarybinary
  • varbinaryvarbinary
  • texttext
  • ntextntext
  • imageimage

他のデータ型が変換される場合 binary または varbinary, 、データが埋め込まれるか、左側に切り捨てられます。When other data types are converted to binary or varbinary, the data is padded or truncated on the left. 桁の埋め込みには 16 進数の 0 が使用されます。Padding is achieved by using hexadecimal zeros.

データの binary データ型と varbinary データ型への変換は、データ間を移動するもっとも簡単な方法がbinary データである場合に便利です。Converting data to the binary and varbinary data types is useful if binary data is the easiest way to move around data. ある時点で、値の型をサイズが十分に大きなバイナリ値に変換し、その後、元に戻すことがあります。At some point, you might convert a value type to a binary value of large enough size and then convert it back. 両方の変換が同じバージョンの SQL ServerSQL Server で行われる場合、この変換では常に結果的に同じ値が生成されます。This conversion always results in the same value if both conversions are taking place on the same version of SQL ServerSQL Server. 値の 2 進表現は、SQL ServerSQL Server のバージョン間で異なる場合があります。The binary representation of a value might change from version to version of SQL ServerSQL Server.

intsmallinttinyintbinary または varbinary に変換できます。You can convert int, smallint, and tinyint to binary or varbinary. binary 型の値を再度 integer 型の値に戻した場合、切り捨てが行われていると、この値は元の integer の値とは同じになりません。If you convert the binary value back to an integer value, this value will be different from the original integer value if truncation has occurred. たとえば、次の SELECT ステートメントは整数値 123456 をバイナリ値 0x0001e240 として格納することを示しています。For example, the following SELECT statement shows that the integer value 123456 is stored as a binary 0x0001e240:

SELECT CAST( 123456 AS BINARY(4) );  

ただし、次の SELECT ステートメントは、変換先の binary 型が小さすぎて値全体を保持できない場合は、左側の桁が暗黙的に切り捨てられ、同じ数値が 0xe240 として格納されることを示します。However, the following SELECT statement shows that if the binary target is too small to hold the entire value, the leading digits are silently truncated so that the same number is stored as 0xe240:

SELECT CAST( 123456 AS BINARY(2) );  

次のバッチは、暗黙的な切り捨てが算術演算に影響を与えることがあり、その場合でもエラーが生成されないことを示します。The following batch shows that this silent truncation can affect arithmetic operations without raising an error:

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

最終的な値は 57921 ではなく 123457 になります。The final result is 57921, not 123457.

注意

すべてのデータ間の変換の入力と binary データ型は、バージョンの間で同じであるとは限りません SQL ServerSQL Serverです。Conversions between any data type and the binary data types are not guaranteed to be the same between versions of SQL ServerSQL Server.

参照See also

CAST および CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)
データ型の変換 (データベース エンジン)Data Type Conversion (Database Engine)
データ型 (Transact-SQL)Data Types (Transact-SQL)