COMPRESS (Transact-SQL)

S’applique à : SQL Server 2016 (13.x) et versions ultérieuresAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPoint de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

Cette fonction compresse l’expression d’entrée à l’aide de l’algorithme Gzip. La fonction retourne un tableau d’octets de type varbinary(max).

Conventions de la syntaxe Transact-SQL

Syntaxe

COMPRESS ( expression )

Arguments

expression

Une expression de l’un des types de données suivants :

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

Pour plus d’informations, consultez Expressions (Transact-SQL)

Type de retour

varbinary(max) représentant le contenu compressé de l’entrée.

Remarques

Les données compressées ne peuvent pas être indexées.

La fonction COMPRESS compresse les données d’expression d’entrée. Vous devez appeler cette fonction pour chaque section de données à compresser. Pour plus d’informations sur la compression automatique des données pendant le stockage au niveau des lignes ou des pages, consultez Compression des données.

Exemples

R. Compresser des données durant l’insertion de tables

Cet exemple montre comment compresser les données insérées dans une table :

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. Archiver la version compressée des lignes supprimées

Cette instruction commence par supprimer les anciens enregistrements de lecteur de la table player. Pour gagner de l’espace, elle stocke les enregistrements dans la table inactivePlayer, dans un format compressé.

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

Voir aussi