MySQL COMPRESS() 函数使用指南
MySQL COMPRESS()
函数压缩一个字符串并返回压缩后的二进制字符串。
要解压缩 COMPRESS()
函数压缩后的内容,请使用 UNCOMPRESS()
函数。
COMPRESS()
语法
这里是 MySQL COMPRESS()
函数的语法:
COMPRESS(str)
参数
str
- 必需的。一个要压缩的字符串。
返回值
MySQL COMPRESS()
函数对指定的字符串 str
进行压缩,并将压缩结果作为二进制字符串返回。
如果参数为 NULL
,MySQL COMPRESS()
函数返回 NULL
。
COMPRESS()
示例
要压缩字符串 hello
,请使用如下语句:
SELECT COMPRESS('hello'), LENGTH(COMPRESS('hello'));
+--------------------------------------+---------------------------+
| COMPRESS('hello') | LENGTH(COMPRESS('hello')) |
+--------------------------------------+---------------------------+
| 0x05000000789CCB48CDC9C90700062C0215 | 17 |
+--------------------------------------+---------------------------+
这里, 输出显示的是二进制字符串对应的十六进制的字符串。要禁用显示十六进制,请在登录时使用 --binary-as-hex=false
参数以禁用将二进制内容显示为十六进制。
这里使用了 LENGTH()
函数展示了压缩后的数据长度。
要压缩空字符串,请使用如下语句:
SELECT COMPRESS(''), LENGTH(COMPRESS(''));
+----------------------------+----------------------+
| COMPRESS('') | LENGTH(COMPRESS('')) |
+----------------------------+----------------------+
| 0x | 0 |
+----------------------------+----------------------+
从上面我们可以看出,很短的字符串压缩后的长度比原始字符串更长。让我们看一个压缩很长字符串的例子。在下面的例子中,我们使用 REPEAT()
函数构造了一个长度为 3000 字符串。
SELECT LENGTH(COMPRESS(REPEAT('abc', 1000)));
+---------------------------------------+
| LENGTH(COMPRESS(REPEAT('abc', 1000))) |
+---------------------------------------+
| 33 |
+---------------------------------------+
这里, REPEAT('abc', 1000)
返回了一个长度为 3000 的字符串,经过 MySQL COMPRESS()
压缩后,长度只有 33。
要计算一个压缩字符串的原始字符串的长度,请使用 UNCOMPRESSED_LENGTH()
函数。
SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('abc', 1000)));
+----------------------------------------------------+
| UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('abc', 1000))) |
+----------------------------------------------------+
| 3000 |
+----------------------------------------------------+