共用方式為


壓縮 (Transact-SQL)

適用於: SQL Server 2016 (13.x) 及以後版本 Azure SQL Database AzureSQL Managed InstanceAzure Synapse AnalyticsSQL Analytics endpoint in Microsoft FabricWarehouse in Microsoft FabricSQL database in Microsoft Fabric

此函數使用 GZIP 演算法壓縮輸入運算式。 此函式會傳回類型 varbinary(max)的位元組陣列。

Transact-SQL 語法慣例

語法

COMPRESS ( expression )

引數

expression

下列其中一種料類型的運算式:

  • binary(n)
  • char(n)
  • nchar(n)
  • nvarchar(max)
  • nvarchar(n)
  • varbinary(max)
  • varbinary(n)
  • varchar(max)
  • varchar(n)

如需詳細資訊,請參閱運算式

傳回類型

varbinary(max),代表已經壓縮的輸入內容。

備註

壓縮後的資料無法編製索引。

COMPRESS 函式會壓縮輸入運算式資料。 您必須叫用此函式才能壓縮各資料區段。 如需在資料列或頁面層級儲存期間自動資料壓縮的詳細資訊,請參閱 資料壓縮

範例

A. 插入資料表時壓縮資料

此範例示範如何壓縮插入資料表的資料:

INSERT INTO player (
    name,
    surname,
    info
)
VALUES (
    N'Ovidiu',
    N'Cracium',
    COMPRESS(N'{"sport":"Tennis","age": 28,"rank":1,"points":15258, "turn":17}')
);

INSERT INTO player (
    name,
    surname,
    info
)
VALUES (
    N'Michael',
    N'Raheem',
    COMPRESS(@info)
);

B. 封存已刪除資料列的壓縮版本

此陳述式會先從 player 資料表將舊的玩家記錄刪除。 為節省空間,陳述式隨後會以壓縮格式將記錄儲存在 inactivePlayer 資料表。

DELETE FROM player
OUTPUT
    deleted.id,
    deleted.name,
    deleted.surname,
    deleted.datemodifier,
    COMPRESS(deleted.info)
INTO dbo.inactivePlayers
WHERE datemodified < @startOfYear;