COMPRESS (Transact-SQL)

适用于:SQL Server 2016 (13.x) 及更高版本 Azure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsMicrosoft Fabric 中的 SQL 分析终结点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;