mysql - mariadb 10 uncompress() 返回 blob 而不是字符串

标签 mysql mariadb

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

例子中也说明了:

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

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

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

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

最佳答案

至少从 MySQL 5.1 开始,UNCOMPRESS() 的结果类型一直是 LONG_BLOB,在此之前它是 VARBINARY

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

关于mysql - mariadb 10 uncompress() 返回 blob 而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26854111/

相关文章:

mariadb - 如何在 Windows 上的 MariaDB 中重置密码?

mysql - 选择、求和、插入、如果存在则用 MySql 更新

mysql - 添加排序规则到 utf8mb4 字符集 - MySQL/MariaDB

MySQL,从id匹配且时间戳早于current_time的多个表中删除

python - 使用 python 更新 mysql 中的列时出错

mysql - 在 MySQL 中选择对

spring-boot - 使用生成的 JOOQ 代码针对多种数据库类型

mysql - phpMyAdmin 和 mysql 保留字

PHP 脚本在 Internet Explorer 和 Firefox 中不起作用

mysql - 无法连接到 Windows 上 X.X.X.X 上的 mysql 服务器