根据mysql和mariadb的说法,如果使用文档 ()压缩了输入字符串,那么解压缩()将返回一个字符串。
在例子中也有说明:
SELECT UNCOMPRESS(COMPRESS('a string'));
+----------------------------------+
| UNCOMPRESS(COMPRESS('a string')) |
+----------------------------------+
| a string |
+----------------------------------+然而,在mysql工作台和navicat上,结果只有一个blob。仅用
SELECT CONVERT(UNCOMPRESS(COMPRESS('a string')) USING utf8);返回原始字符串。我哪里错了?医生是错的还是我只是误解了这里?
发布于 2014-11-26 11:34:39
UNCOMPRESS()的结果类型自MySQL 5.1以来一直是LONG_BLOB,在此之前是VARBINARY。
背景是,COMPRESS()只压缩字符串内容,而不保存元数据(如字符集或排序规则)。因此,对于UNCOMPRESS()来说,将未压缩的数据作为二进制数据流返回是唯一安全的选项。将返回的二进制数据转换为特定的字符集和排序规则由用户决定,例如,将这些信息存储在单独的列中,然后将其作为CONVERT()的参数。
https://stackoverflow.com/questions/26854111
复制相似问题