Поделиться через


COMPRESS (Transact-SQL)

Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL Azure Управляемый экземпляр SQL Azure конечную точку аналитики SQL Azure Synapse Analytics в хранилище Microsoft Fabric в Microsoft Fabric

Эта функция сжимает входное выражение с помощью алгоритма Gzip . Она возвращает массив байтов типа varbinary(max).

Соглашения о синтаксисе Transact-SQL

Синтаксис

COMPRESS ( expression )

Аргументы

выражение

Выражение одного из следующих типов данных:

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

Дополнительные сведения см. в статье Выражения (Transact-SQL).

Возвращаемый тип

varbinary(max), представляющий сжатое содержимое входных данных.

Замечания

Сжатые данные не могут быть индексированы.

Функция COMPRESS сжимает данные, предоставленные во входном выражении. Ее необходимо вызывать для каждого раздела сжимаемых данных. Дополнительные сведения о автоматическом сжатие данных во время хранения на уровне строки или страницы см. в разделе "Сжатие данных".

Примеры

А. Сжатие данных во время вставки таблицы

В этом примере показано, как сжать данные, вставляемые в таблицу.

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;

См. также