適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
分析平台系統(PDW)
Microsoft Fabric 中的 SQL 分析端點
Microsoft Fabric 中的倉儲
Microsoft Fabric 中的 SQL 資料庫
固定長度或可變長度的二進位資料類型。
Arguments
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。
Remarks
當資料定義或變數宣告陳述式中未指定 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。 如果你將 二進位 值轉回整數值,這個值會與原始整數值不同,若發生截斷。 例如,下列 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
不同 SQL Server 版本中,任何資料類型與 binary 資料類型之間進行轉換不保證結果都會一樣。