binary 和 varbinary (Transact-SQL)
適用於:sql Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) SQL 分析端點在 Microsoft Fabric SQL 資料庫中Microsoft網狀架構倉儲中的 SQL 分析端點Microsoft網狀架構
固定長度或可變長度的二進位資料類型。
引數
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 資料
將資料從字串資料類型轉換成不等長的 binary 或 varbinary 資料類型時,SQL Server 會填補或截斷右邊的資料。 這些字串資料類型為:
- char
- varchar
- nchar
- nvarchar
- binary
- varbinary
- text
- ntext
- image
將其他資料類型轉換成 binary 或 varbinary 時,則在左側填補或截斷資料。 使用十六進位零進行填補。
若 binary 資料是搬移資料最簡易的方式,則將資料轉換成 binary 和 varbinary 資料類型會非常有幫助。 在某些時候,您可以將實值型別轉換成大小足夠大的二進位值,然後將其轉換回來。 若這兩項轉換都在同一版 SQL Server 上執行,則此轉換一律會產生相同的值。 值的二進位表示法可能會隨著不同的 SQL Server 版本而變更。
您可以將 int、smallint 和 tinyint 轉換成 binary 或 varbinary。 如果您將 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) 資料類型。