web-dev-qa-db-fra.com

utiliser group_concat dans PHPMYADMIN affichera le résultat sous la forme [BLOB - 3B]

J'ai une requête qui utilise le GROUP_CONCAT de mysql sur un champ entier.
J'utilise PHPMYADMIN pour développer cette requête. Mon problème est qu'au lieu de montrer 1,2 qui est le résultat du champ concaténé, je reçois [BLOB - 3B]. 

La requête est

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

(les deux champs sont unsigned int, les deux ne sont pas uniques)

Que dois-je ajouter pour voir les résultats réels?

55

Juste au-dessus du résultat de la requête (à gauche), vous verrez +options. Appuyez dessus et marquez 

Afficher le contenu du BLOB

19

On dirait que GROUP_CONCAT s'attend à ce que cette valeur soit une chaîne. Je viens de rencontrer le même problème. Résolu en convertissant la colonne int en une chaîne comme celle-ci:

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

Je pensais partager si vous aviez toujours un problème avec ça.

85
munch

Selon la documentation MySQL , CAST(expr AS type) est un SQL standard et devrait donc être utilisé. En outre, vous pouvez omettre la longueur de la chaîne. Par conséquent, je suggérerais ce qui suit:

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

Pour moi, cela a aidé (trouvé dans ceci blog post ):

Dans mon cas, le paramètre à GROUP_CONCAT était une chaîne, mais la fonction produisait toujours un BLOB, mais la conversion du résultat de GROUP_CONCAT fonctionnait. 

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

Tu peux le faire: 

set session group_concat_max_len = 512;

Si group_concat_max_len est supérieur à 512, la requête renvoie l'octet [] . Mais vous pouvez passer à une chaîne.

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