binary 和 varbinary (Transact-SQL)

適用於:Microsoft Fabric 中 Microsoft Fabric倉儲中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse AnalyticsAnalytics Platform System (PDW)SQL 分析端點

固定長度或可變長度的二進位資料類型。

引數

binary [ ( n ) ]

固定長度的二進位資料,其長度為 n 位元組,其中 n 是 1 到 8,000 的值。 儲存體大小是 n 位元組。

varbinary [ ( n | max ) ]

可變長度的二進位資料。 n 可以是從 1 到 8,000 之間的值。 max 表示儲存體大小上限是 2^31-1 個位元組。 儲存體大小是輸入資料的實際長度再加上 2 位元組。 輸入的資料有可能是 0 位元組。 varbinary 的 ANSI SQL 同義字是 binary varying

備註

當資料定義或變數宣告陳述式中未指定 n 時,預設長度為 1。 當 n 不是由 CAST 函數所指定時,預設長度為 30。

資料類型 使用時機...
binary 當資料行資料項目的大小一致時。
varbinary 當資料行資料項目的大小變化相當大時。
varbinary(max) 當資料行資料項目超過 8,000 位元組時。

轉換 binary 與 varbinary 資料

將資料從字串資料類型轉換成不等長的 binaryvarbinary 資料類型時,SQL Server 會填補或截斷右邊的資料。 這些字串資料類型為:

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

將其他資料類型轉換成 binaryvarbinary 時,則在左側填補或截斷資料。 使用十六進位零進行填補。

binary 資料是搬移資料最簡易的方式,則將資料轉換成 binaryvarbinary 資料類型會非常有幫助。 在某些時候,您可以將實值型別轉換成大小足夠大的二進位值,然後將其轉換回來。 若這兩項轉換都在同一版 SQL Server 上執行,則此轉換一律會產生相同的值。 值的二進位表示法可能會隨著不同的 SQL Server 版本而變更。

您可以將 intsmallinttinyint 轉換成 binaryvarbinary。 如果您將 binary 值轉換回整數值,若有發生截斷,則此值會與原始的整數值不同。 例如,下列 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

注意

不同 SQL Server 版本中,任何資料類型與 binary 資料類型之間進行轉換不保證結果都會一樣。

限制

目前,在 Microsoft Fabric 中,僅支援 varbinary(n) 。 不支援 binary 和 varbinary(max) 資料類型。

另請參閱