Partager via


COMPRESS (Transact-SQL)

S’applique à : SQL Server 2016 (13.x) et versions ultérieures d’Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics SQL Analyticsdans Microsoft FabricWarehouse dans microsoft FabricSQL Database dans Microsoft Fabric SQL Database 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.

Types 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 de la ligne ou de la page, 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;