web-dev-qa-db-ja.com

MySQL WorkbenchでBLOBを直接表示するにはどうすればよいですか

MySQL Workbench CE 5.2.30 CE/Rev 6790を使用しています。次のステートメントを実行する場合:

SELECT OLD_PASSWORD("test")

Nice BLOBアイコンのみが返されます。左クリックしてセルを選択し、右クリックして[ビューアーで値を開く]を選択し、[テキスト]タブを選択する必要があります。

同じことをphpMyAdminで使用すると、OLD_PASSWORD呼び出しの値を直接取得できます。これは単なる例ですが、そのような結果を出力で直接確認する方法はありますか?

60
mark

要するに:

  1. Edit>Preferencesに移動します
  2. SQL Editorを選択します
  3. SQL Executionの下で、BINARY/VARBINARYを非バイナリ文字列として扱います
  4. MySQL Workbenchを再起動します(この要件についてはプロンプトも通知もされません)。

MySQL Workbench 6.0 +

  1. Edit>Preferencesに移動します
  2. SQLクエリを選択します
  3. Query Resultsで、をチェックBINARY/VARBINARYを非バイナリ文字列として扱います
  4. MySQL Workbenchを再起動することは必須ではありません(この要件のプロンプトや通知はありません)。*

この設定を使用すると、BLOBを取得せずにフィールドを連結できます。

これはバージョン5.2.22以降に適用され、 このMySQLバグ の結果だと思います。

免責事項:この設定のマイナス面がわからない-多分BINARY/VARBINARY値を選択すると、誤解を招く可能性のあるプレーンテキストとして表示されます。十分に大きい場合、パフォーマンスが低下しますか?

99
spioter

3つの手順を実行します。

  1. 「WorkBenchの設定」に移動->「クエリ結果」の下の「SQLエディター」を選択:「BINARY/VARBINARYを非バイナリ文字列として扱う」にチェックを付けます

  2. MySQL WorkBenchを再起動します。

  3. SELECT SUBSTRING(BLOB<COLUMN_NAME>,1,2500) FROM <Table_name>;を選択します

25
NKP

これが質問に答えるかどうかはわかりませんが、フィールドの「blob」アイコンを右クリックすると(テーブルを表示しているとき)、「Open Value in Editor」オプションがあります。タブの1つを使用すると、ブロブを表示できます。これはバージョンです。 5.2.34

22
Dan Sherman

キャストは動作しますが、それは苦痛なので、大量の真のBLOBデータを使用している場合を除き、スピオターの方法を使用することをお勧めします。

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

他の型としてキャストしたり、サイズを制限したりすることもできますが、ほとんどの場合、CHARを使用します。 http://dev.mysql.com/doc/refman/5.5/en/cast-functions。 html#function_cast

13
CSTobey

私は恐れている、それはワークベンチのバグとしてリストされている可能性はないようです: http://bugs.mysql.com/bug.php?id=50692 それは非常に便利ですが!

5
dmag

MySQLドキュメント によると、同じ問題がありました。BLOBのサブストリングを選択できます。

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

HTH、グリッシ

4
glissi

作業台6.3
高得点の回答に従い、UNCOMPRESS()を使用します

(要するに:
1。 [編集]> [設定]に移動します
2。 SQLエディターを選択
3。 [SQL Execution]で、[BINARY/VARBINARYを非バイナリ文字列として扱う]をオンにします
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を右クリックして[エディターで値を開く]をクリックします。

3
Stephanie

ワークベンチの「プリファレンス」の修正がうまくいかなかったため、他の投稿をいくつかまとめました。 (WB 6.3)

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

できることはほとんどありません

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/

2
Kdecom

注:ここでの以前の回答は、BLOBが任意のバイトシーケンスである場合には特に役立ちません。例えば128ビットGUIDまたはmd5チェックサムを格納するBINARY(16)。

その場合、エディタの設定は現在ありません-私は 今すぐ機能リクエストを送信しました があります-より詳細な説明についてはそのリクエストをご覧ください。

[その機能要求が実装されるまで/されない限り]解決策は、クエリのHEX関数SELECT HEX(mybinarycolumn) FROM mytableです。


別の方法は、MySQL Workbenchの代わりにphpMyAdminを使用することです。デフォルトでは16進数が表示されます。

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

私の場合、Workbenchは機能しません。そのため、上記のソリューションを使用して、blobデータをテキストとして表示しました。

0
chil