COMPRESS (Transact-SQL)

适用于:sql Server 2016 (13.x) 及更高版本 Azure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsSQL 分析终结点Microsoft FabricWarehouse 中的Microsoft Fabric SQL 数据库在 Microsoft Fabric 中的 fabric SQL 数据库

此函数使用 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;