57

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

クエリは

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

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

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

4

7 に答える 7

88

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

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

あなたがまだこれに問題を抱えている場合に備えて、私は共有したいと考えました.

于 2010-04-26T19:40:29.430 に答える
44

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

SELECT rec_id, GROUP_CONCAT(CAST(user_id AS CHAR))
FROM t1
GROUP BY rec_id
于 2010-11-05T11:23:40.010 に答える
22

私にとって、これは役に立ちました(このブログ投稿で見つけました):

私の場合、パラメータGROUP_CONCATは文字列でしたが、関数はまだBLOBになりましたが、結果を変換しGROUP_CONCATました。

CONVERT(GROUP_CONCAT(user_id) USING 'utf8')
于 2013-01-11T09:03:13.553 に答える
20

クエリ結果のすぐ上 (左側) に が表示されます+options。押して印をつけます

BLOB コンテンツを表示

于 2011-06-16T15:46:41.953 に答える
0

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

set session group_concat_max_len = 512;

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

System.Text.Encoding.Default.GetString((byte[])DataTable.Rows[0][0]);
于 2016-02-11T10:58:22.217 に答える
-1

phpMyAdminディレクトリ内のファイルにアクセスできる場合config.inc.php、最善の解決策は次の行を変更することだと思います。

$ cfg ['Servers'] [$ i] ['extension'] ='mysql';

これに:

$ cfg ['Servers'] [$ i] ['extension'] ='mysqli';

mysqli拡張機能を使用できる場合は、それを使用してください。より安全で、もう少し最適化されており、デフォルトでutf-8のBLOBタイプをより適切に処理します。[BLOB]エントリは、他の特別な構成オプションを追加しなくても、値として表示され始めるはずです。

于 2011-06-23T23:28:57.400 に答える