COMPRESS (Transact-SQL)

Gilt für: SQL Server 2016 (13.x) und höherAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsSQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Diese Funktion komprimiert den Eingabeausdruck mithilfe des Gzip-Algorithmus. Die Funktion gibt ein Bytearray vom Typ varbinary(max) zurück.

Transact-SQL-Syntaxkonventionen

Syntax

COMPRESS ( expression )

Argumente

expression

Ein Ausdruck mit einem der folgenden Datentypen:

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

Weitere Informationen finden Sie unter Ausdrücke (Transact-SQL).

Rückgabetyp

varbinary(max), stellt den komprimierten Inhalt der Eingabe dar.

Bemerkungen

Komprimierte Daten können nicht indiziert werden.

Die COMPRESS-Funktion komprimiert die Ausdrucksdaten der Eingabe. Sie müssen diese Funktion aufrufen, damit jeder Datenabschnitt komprimiert wird. Weitere Informationen zur automatischen Datenkomprimierung während der Speicherung auf Zeilen- oder Seitenebene finden Sie unter Datenkomprimierung.

Beispiele

A. Komprimieren von Daten während des Tabelleneinfügevorgangs

Dieses Beispiel zeigt, wie Daten aus einer Tabelle komprimiert werden können, die in einer Tabelle enthalten sind:

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. Archivieren einer komprimierten Version von gelöschten Zeilen

Diese Anweisung löscht zunächst ältere Spielerdaten aus der player-Tabelle. Die Datensätze werden dann in der inactivePlayer-Tabelle in einem komprimierten Format gespeichert, um Speicherplatz zu sparen.

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

Weitere Informationen