Compartilhar via


COMPRESS (Transact-SQL)

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores do Banco de Dados SQL doAzure Azure Instância Gerenciada de SQLdo Azure Synapse Analytics ponto deextremidade de análise de SQL no Microsoft Fabric Warehouse no Banco de Dados SQLdo Microsoft Fabricno 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.

Tipos 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. Para obter mais informações sobre a compactação automática de dados durante o armazenamento no nível da linha ou da página, consulte Compactação de dados.

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;