如何在MySQL Workbench中直接查看blob

时间:2010-12-03 09:04:44

标签: mysql mysql-workbench

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

SELECT OLD_PASSWORD("test")

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

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

12 个答案:

答案 0 :(得分:95)

简而言之:

  1. 转到编辑> 选择
  2. 选择 SQL编辑器
  3. SQL执行下,检查将BINARY / VARBINARY视为非二进制字符串
  4. 重启MySQL Workbench(系统不会提示您或告知您此要求)。
  5. 在MySQL Workbench 6.0 +

    1. 转到编辑> 选择
    2. 选择 SQL查询
    3. 查询结果下,检查将BINARY / VARBINARY视为非二进制字符串
    4. 重启MySQL Workbench不是必须的(不会提示您或告知此要求)。*
    5. 使用此设置,您将能够连接字段而不会获得blob。

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

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

答案 1 :(得分:24)

执行三个步骤:

  1. 转到“WorkBench首选项” - >在“查询结果”下选择“SQL编辑器”:选中“将BINARY / VARBINARY视为非二进制字符串”

  2. 重启MySQL WorkBench。

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

答案 2 :(得分:22)

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

答案 3 :(得分:12)

投射工作,但这是一个痛苦,所以我建议使用spioter的方法,除非你使用了很多真正的blob数据。

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

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

答案 4 :(得分:5)

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

答案 5 :(得分:4)

有同样的问题,根据the MySQL documentation,你可以选择一个BLOB的子串:

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

HTH,glissi

答案 6 :(得分:3)

工作台6.3
关注高分答案,然后使用SELECT SUBSTRING(UNCOMPRESS(<COLUMN_NAME>),1,2500) FROM <Table_name>;

(简而言之:
 1.转到编辑&gt;首
 2.选择SQL编辑器  3.在SQL Execution下,选中Treat BINARY / VARBINARY作为非二进制字符串
 4.重新启动MySQL Workbench(不会提示您或告知此要求)。)

然后

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

UNCOMPRESS(<COLUMN_NAME>)

如果你只是放{{1}},你可以右键单击blob并点击&#34;在编辑器中打开值&#34;。

答案 7 :(得分:3)

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

SELECT CAST(`column` AS CHAR(10000) CHARACTER SET utf8) FROM `table`;

答案 8 :(得分: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/

答案 9 :(得分:1)

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

在那种情况下,当前没有编辑者的偏好-尽管我有submitted a feature request now-请参阅该请求以获取更详细的说明。

[直到/除非实现了功能请求],解决方案是查询git stash pop中的HEX函数。


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

答案 10 :(得分:0)

select CONVERT((column_name) USING utf8) FROM table;

就我而言,Workbench无法正常工作。所以我使用上述解决方案将blob数据显示为文本。

答案 11 :(得分:-3)

SELECT *,CONVERT(UNCOMPRESS(column)USING“utf8”)AS列FROM table_name