整数フィールドでmysqlのGROUP_CONCATを使用するクエリがあります。
PHPMYADMINを使用してこのクエリを開発しています。連結フィールドの結果である1,2を表示する代わりに、[BLOB-3B]を取得するという私の問題。
クエリは
SELECT rec_id,GROUP_CONCAT(user_id)
FROM t1
GROUP BY rec_id
(両方のフィールドはunsigned intであり、両方とも一意ではありません)
実際の結果を見るには何を追加すればよいですか?
クエリ結果のすぐ上(左側)に_+options
_が表示されます。それを押してマーク
BLOBコンテンツを表示する
GROUP_CONCATはその値が文字列であることを期待しているように見えます。私はちょうど同じ問題に出くわしました。 int列を次のような文字列に変換することで解決しました。
SELECT rec_id,GROUP_CONCAT(CONVERT(user_id, CHAR(8)))
FROM t1
GROUP BY rec_id
あなたがまだこれに関して問題を抱えている場合に私が共有すると思いました。
MySQLのドキュメントによれば 、CAST(expr AS type)
は標準SQLであるため、推奨されます。また、文字列の長さを省略できます。したがって、次のことをお勧めします。
SELECT rec_id, GROUP_CONCAT(CAST(user_id AS CHAR))
FROM t1
GROUP BY rec_id
私にとっては、これが助けになりました(これを ブログ投稿 で見つけました):
私の場合、GROUP_CONCAT
は文字列でしたが、関数は引き続きBLOBになりましたが、GROUP_CONCAT
働いた。
CONVERT(GROUP_CONCAT(user_id) USING 'utf8')
あなたはこれを行うことができます:
set session group_concat_max_len = 512;
Group_concat_max_lenが512を超える場合、クエリはbyte []を返します。ただし、文字列に渡すことはできます。
System.Text.Encoding.Default.GetString((byte[])DataTable.Rows[0][0]);