COMPRESS (Transact-SQL)
Применимо к: SQL Server 2016 (13.x) и более поздних версий
Azure SQL Database
Управляемый экземпляр SQL Azure
Azure Synapse Analytics
Эта функция сжимает входное выражение с использованием алгоритма 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)
. Дополнительные сведения см. в статье Выражения (Transact-SQL).
Типы возвращаемых данных
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));
Б. Архивация сжатой версии удаленных строк
Приведенная ниже инструкция сначала удаляет старые записи игроков из таблицы player
. Затем для экономии места она сохраняет их в сжатом виде в таблице inactivePlayer
.
DELETE FROM player
OUTPUT deleted.id, deleted.name, deleted.surname, deleted.datemodifier, COMPRESS(deleted.info)
INTO dbo.inactivePlayers
WHERE datemodified < @startOfYear;