Compartir vía


COMPRESS (Transact-SQL)

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores de Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics de Azure Synapse Analytics en Microsoft Fabric Warehouse en Microsoft Fabric

Esta función comprime la expresión de entrada con el algoritmo Gzip. La función devuelve una matriz de bytes del tipo varbinary(max).

Convenciones de sintaxis de Transact-SQL

Sintaxis

COMPRESS ( expression )

Argumentos

expression

Una expresión de uno de los siguientes tipos de datos:

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

Para más información, consulte Expresiones (Transact-SQL).

Tipo de valor devuelto

varbinary(max), que representa el contenido comprimido de la entrada.

Comentarios

Los datos comprimidos no se pueden indexar.

La función COMPRESS comprime los datos de la expresión de entrada. Debe invocar esta función para cada sección de datos que se vaya a comprimir. Para obtener más información sobre la compresión de datos automática durante el almacenamiento en el nivel de fila o página, vea Compresión de datos.

Ejemplos

A. Comprimir datos durante la inserción en una tabla

En este ejemplo se muestra cómo comprimir los datos insertados en una tabla:

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. Archivar una versión comprimida de filas eliminadas

Esta instrucción primero elimina los registros antiguos del reproductor de la tabla player. Para ahorrar espacio, luego almacena los registros en la tabla inactivePlayer, en un formato comprimido.

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

Consulte también