mariadb 10 uncompress()返回blob而不是string

时间:2014-11-10 22:22:49

标签: mysql mariadb

根据mysql和mariadb docs uncompress()返回一个字符串,如果使用compress()压缩输入字符串。

在例子中也说明了:

SELECT UNCOMPRESS(COMPRESS('a string'));
+----------------------------------+
| UNCOMPRESS(COMPRESS('a string')) |  
+----------------------------------+
| a string                         |
+----------------------------------+

然而,在mysql workbench和navicat上,我只得到一个blob作为结果。仅使用

SELECT CONVERT(UNCOMPRESS(COMPRESS('a string')) USING utf8);

返回原始字符串。哪里错了?文档是错的还是我只是在这里误解?

1 个答案:

答案 0 :(得分:2)

UNCOMPRESS()的结果类型至少是LONG_BLOB,至少是MySQL 5.1,之前它是VARBINARY

背景是COMPRESS()仅压缩字符串内容,但不保留元数据,如字符集或排序规则。因此,对于UNCOMPRESS(),将未压缩数据作为二进制数据流返回是唯一安全的选择。将返回的二进制数据转换为特定字符集和校对取决于用户,例如将此信息带外存储在一个单独的列中,然后再将其用作CONVERT()的参数。