webdevqa.jp.net

PHPMYADMINでgroup_concatを使用すると、結果が[BLOB-3B]として表示されます

整数フィールドでmysqlのGROUP_CONCATを使用するクエリがあります。
PHPMYADMINを使用してこのクエリを開発しています。連結フィールドの結果である1,2を表示する代わりに、[BLOB-3B]を取得するという私の問題。

クエリは

SELECT rec_id,GROUP_CONCAT(user_id)
FROM t1
GROUP BY rec_id

(両方のフィールドはunsigned intであり、両方とも一意ではありません)

実際の結果を見るには何を追加すればよいですか?

55

クエリ結果のすぐ上(左側)に_+options_が表示されます。それを押してマーク

BLOBコンテンツを表示する

19

GROUP_CONCATはその値が文字列であることを期待しているように見えます。私はちょうど同じ問題に出くわしました。 int列を次のような文字列に変換することで解決しました。

SELECT rec_id,GROUP_CONCAT(CONVERT(user_id, CHAR(8)))
FROM t1
GROUP BY rec_id

あなたがまだこれに関して問題を抱えている場合に私が共有すると思いました。

85
munch

MySQLのドキュメントによればCAST(expr AS type)は標準SQLであるため、推奨されます。また、文字列の長さを省略できます。したがって、次のことをお勧めします。

SELECT rec_id, GROUP_CONCAT(CAST(user_id AS CHAR))
FROM t1
GROUP BY rec_id
44
scy

私にとっては、これが助けになりました(これを ブログ投稿 で見つけました):

私の場合、GROUP_CONCATは文字列でしたが、関数は引き続きBLOBになりましたが、GROUP_CONCAT働いた。

CONVERT(GROUP_CONCAT(user_id) USING 'utf8')
21
Janne

あなたはこれを行うことができます:

set session group_concat_max_len = 512;

Group_concat_max_lenが512を超える場合、クエリはbyte []を返します。ただし、文字列に渡すことはできます。

System.Text.Encoding.Default.GetString((byte[])DataTable.Rows[0][0]);
0
Joe