Dela via


KOMPRIMERA (Transact-SQL)

Gäller för: SQL Server 2016 (13.x) och senare versioner Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL Analytics-slutpunkt i Microsoft Fabric Warehouse i Microsoft FabricSQL Database i Microsoft Fabric

Den här funktionen komprimerar indatauttrycket med hjälp av Gzip-algoritmen . Funktionen returnerar en bytematris av typen varbinary(max).

Transact-SQL syntaxkonventioner

Syntax

COMPRESS ( expression )

Arguments

uttryck

Ett uttryck för någon av följande datatyper:

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

Mer information finns i Uttryck.

Returtyper

varbinary(max), som representerar det komprimerade innehållet i indata.

Anmärkningar

Komprimerade data kan inte indexeras.

Funktionen COMPRESS komprimerar indata för indatauttryck. Du måste anropa den här funktionen för att varje dataavsnitt ska komprimeras. Mer information om automatisk datakomprimering under lagring på rad- eller sidnivå finns i Datakomprimering.

Examples

A. Komprimera data under tabellinfogning

Det här exemplet visar hur du komprimerar data som infogats i en tabell:

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. Arkivera komprimerad version av borttagna rader

Den här instruktionen player tar först bort gamla spelarposter från tabellen. För att spara utrymme lagrar den sedan posterna inactivePlayer i tabellen i ett komprimerat format.

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