81

我正在使用 MySQL Workbench CE 5.2.30 CE / Rev 6790 。执行以下语句时:

SELECT OLD_PASSWORD("test")

我只得到一个漂亮的BLOB图标,我需要左键单击选择单元格,右键单击并选择“在查看器中打开值”并选择“文本”选项卡。

对 phpMyAdmin 使用相同的方法,我可以直接返回OLD_PASSWORD调用的值。这只是一个例子,但有没有办法直接在输出中看到这样的结果?

4

12 回答 12

119

简而言之:

  1. 转到编辑>首选项
  2. 选择SQL 编辑器
  3. SQL Execution下,选中将 BINARY/VARBINARY 作为非二进制字符串
  4. 重新启动 MySQL Workbench(不会提示或通知您此要求)。

在 MySQL Workbench 6.0+ 中

  1. 转到编辑>首选项
  2. 选择SQL 查询
  3. Query Results下,选中Treat BINARY/VARBINARY as nonbinary string
  4. 重新启动 MySQL Workbench 不是强制性的(不会提示或通知您此要求)。*

使用此设置,您将能够连接字段而不会获得 blob。

我认为这适用于版本 5.2.22 及更高版本,并且是这个 MySQL 错误的结果。

免责声明:我不知道此设置的缺点是什么-也许当您选择BINARY/VARBINARY值时,您会将其视为纯文本,这可能会产生误导和/或如果它们足够大,可能会妨碍性能?

于 2011-09-06T16:38:19.067 回答
32

我不确定这是否回答了问题,但是如果您右键单击字段中的“blob”图标(查看表格时),则可以选择“在编辑器中打开值”。其中一个选项卡可让您查看 blob。这是在版本。5.2.34

于 2011-08-01T19:13:57.287 回答
30

执行三个步骤:

  1. 转到“WorkBench Preferences”-> 在“Query Results”下选择“SQL Editor”:勾选“Treat BINARY/VARBINARY as nonbinary string”

  2. 重新启动 MySQL 工作台。

  3. 现在选择SELECT SUBSTRING(<BLOB_COLUMN_NAME>,1,2500) FROM <Table_name>;

于 2012-11-02T17:45:11.680 回答
14

铸造工作,但它很痛苦,所以我建议使用 spioter 的方法,除非你使用大量真正的 blob 数据。

SELECT CAST(OLD_PASSWORD("test") AS CHAR)

您也可以转换为其他类型,甚至限制大小,但大多数时候我只使用 CHAR: http ://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast

于 2012-05-21T16:27:12.637 回答
8
select CONVERT((column_name) USING utf8) FROM table;

就我而言,Workbench 不起作用。所以我使用上述解决方案将 blob 数据显示为文本。

于 2019-06-18T15:35:16.380 回答
6

恐怕似乎不可能,它被列为工作台中的一个错误: http ://bugs.mysql.com/bug.php?id=50692 不过它会非常有用!

于 2010-12-23T09:20:28.683 回答
5

有同样的问题,根据MySQL 文档,你可以选择一个 BLOB 的子字符串:

SELECT id, SUBSTRING(comment,1,2000) FROM t

HTH,滑动

于 2011-05-18T13:55:58.197 回答
5

我将其他一些帖子拼凑在一起,因为工作台“首选项”修复对我不起作用。(世界银行 6.3)

SELECT CAST(`column` AS CHAR(10000) CHARACTER SET utf8) FROM `table`;
于 2018-03-15T22:09:41.997 回答
4

工作台 6.3
遵循高分答案然后使用UNCOMPRESS()

(简而言之:
1. 转到 Edit > Preferences
2. 选择 SQL Editor
3. 在 SQL Execution 下,选中 Treat BINARY/VARBINARY as nonbinary string
4. 重新启动 MySQL Workbench(不会提示或通知您此要求)。)

然后

SELECT SUBSTRING(UNCOMPRESS(<COLUMN_NAME>),1,2500) FROM <Table_name>;

或者

SELECT CAST(UNCOMPRESS(<COLUMN_NAME>) AS CHAR) FROM <Table_name>;

如果你只是把UNCOMPRESS(<COLUMN_NAME>)你可以右键单击blob并单击“在编辑器中打开值”。

于 2016-10-06T14:48:58.727 回答
2

你可以做的事情很少

SELECT GROUP_CONCAT(CAST(name AS CHAR))
FROM product
WHERE  id   IN (12345,12346,12347)

如果您想通过查询订购,您可以按演员订购,如下所示

SELECT GROUP_CONCAT(name ORDER BY name))
FROM product
WHERE id   IN (12345,12346,12347)

正如它在这个博客上所说

http://www.kdecom.com/mysql-group-concat-blob-bug-solved/

于 2013-04-28T21:10:25.413 回答
0

注意:如果 BLOB 是任意字节序列,那么前面的答案并不是特别有用;例如 BINARY(16) 存储 128 位 GUID 或 md5 校验和。

在这种情况下,目前没有编辑器偏好——尽管我现在已经提交了一个功能请求——请参阅该请求以获得更详细的解释。

[直到/除非实现该功能请求],解决方案是HEX查询中的功能:SELECT HEX(mybinarycolumn) FROM mytable.


另一种方法是使用phpMyAdmin而不是 MySQL Workbench - 默认情况下显示十六进制。

于 2019-04-09T20:49:32.577 回答
-3

SELECT *, CONVERT( UNCOMPRESS(column) USING "utf8" ) AS column FROM table_name

于 2017-06-26T10:53:31.850 回答