KOMPRESE (Transact-SQL)

Platí pro: SQL Server 2016 (13.x) a novější verze koncového bodu Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analyticsv Microsoft FabricWarehouse v databázi Microsoft FabricSQL v Microsoft Fabric

Tato funkce komprimuje vstupní výraz pomocí algoritmu Gzip . Funkce vrací bajtové pole typu varbinary(max).

Transact-SQL konvence syntaxe

Syntaxe

COMPRESS ( expression )

Arguments

expression

Výraz jednoho z následujících datových typů:

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

Další informace naleznete v tématu Výrazy.

Návratové typy

varbinary(max), což představuje komprimovaný obsah vstupu.

Poznámky

Komprimovaná data nelze indexovat.

Funkce COMPRESS komprimuje vstupní výrazová data. Tuto funkci musíte vyvolat pro každou datovou sekci pro kompresi. Pro více informací o automatické kompresi dat během ukládání na úrovni řádků nebo stránek viz komprese dat.

Examples

A. Komprimujte data během vkládání tabulky

Tento příklad ukazuje, jak komprimovat data vložená do tabulky:

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. Archivní komprimovaná verze smazaných řádků

Toto prohlášení nejprve maže staré hráčské záznamy z tabulky player . Aby ušetřil místo, ukládá záznamy do tabulky inactivePlayer v komprimovaném formátu.

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