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?
Juste au-dessus du résultat de la requête (à gauche), vous verrez +options
. Appuyez dessus et marquez
Afficher le contenu du BLOB
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.
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
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')
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]);