COMPRESS (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e posteriores Banco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPonto de extremidade de análises SQL no Microsoft FabricWarehouse no Microsoft Fabric

Essa função compacta a expressão de entrada usando o algoritmo Gzip. A função retorna uma matriz de bytes do tipo varbinary(max).

Convenções de sintaxe de Transact-SQL

Sintaxe

COMPRESS ( expression )

Argumentos

expressão

Uma expressão de um dos seguintes tipos de dados:

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

Para obter mais informações, confira Expressões (Transact-SQL).

Tipo de retorno

varbinary(max) representa o conteúdo compactado da entrada.

Comentários

Dados compactados não podem ser indexados.

A função COMPRESS compacta os dados de expressão de entrada. É necessário invocar essa função para cada seção de dados a ser compactada. Veja Compactação de dados para saber mais sobre a compactação de dados automática durante o armazenamento no nível de linha ou página.

Exemplos

a. Compactar dados durante a inserção de tabela

O seguinte exemplo mostra como compactar dados inseridos em uma tabela:

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. Arquivar a versão compactada de linhas excluídas

Primeiro, essa instrução exclui registros antigos do player da tabela player. Para economizar espaço, em seguida, armazena os registros na tabela inactivePlayer, em um formato compactado.

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

Confira também