Applies to: SQL Server 2016 (13.x) and later Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics

This function compresses the input expression, using the GZIP algorithm. The function returns a byte array of type varbinary(max).

Topic link icon Transact-SQL Syntax Conventions


COMPRESS ( expression )  



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


  • varchar(n)

expression. See Expressions (Transact-SQL) for more information.

Return types

varbinary(max) representing the compressed content of the input.


Compressed data cannot be indexed.

The COMPRESS function compresses the input expression data. You must invoke this function for each data section to compress. See Data Compression for more information about automatic data compression during storage at the row or page level.


A. Compress Data During the Table Insert

This example shows how to compress data inserted into a 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. Archive compressed version of deleted rows

This statement first deletes old player records from the player table. To save space, it then stores the records in the inactivePlayer table, in a compressed format.

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

See also

String Functions (Transact-SQL)