webentwicklung-frage-antwort-db.com.de

wenn Sie group_concat in PHPMYADMIN verwenden, wird das Ergebnis als [BLOB - 3B] angezeigt.

Ich habe eine Abfrage, die GROUP_CONCAT von MySQL für ein Ganzzahlfeld verwendet.
Ich verwende PHPMYADMIN, um diese Abfrage zu entwickeln. Mein Problem, dass anstelle von 1,2, das Ergebnis des verketteten Feldes ist, ich [BLOB - 3B] bekomme. 

Abfrage ist

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

(beide Felder sind nicht vorzeichenlos int, beide sind nicht eindeutig)

Was muss ich hinzufügen, um die tatsächlichen Ergebnisse zu sehen?

55

Direkt über dem Abfrageergebnis (links) sehen Sie +options. Drücken Sie es und markieren Sie 

BLOB-Inhalt anzeigen

19

Sieht so aus, als würde GROUP_CONCAT erwarten, dass dieser Wert eine Zeichenfolge ist. Ich bin gerade auf das gleiche Problem gestoßen. Es wurde gelöst, indem die int -Spalte wie folgt in eine Zeichenfolge konvertiert wurde:

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

Ich dachte, ich würde es teilen, falls Sie immer noch ein Problem damit hatten.

85
munch

Laut der MySQL-Dokumentation ist CAST(expr AS type) Standard-SQL und sollte daher bevorzugt werden. Sie können auch die Stringlänge weglassen. Ich würde daher folgendes vorschlagen:

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

Für mich hat das geholfen (fand es in diesem Blogbeitrag ):

In meinem Fall war der Parameter für GROUP_CONCAT string, aber die Funktion führte immer noch zu einem BLOB, aber das Konvertieren des Ergebnisses von GROUP_CONCAT hat funktioniert. 

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

Du kannst das: 

set session group_concat_max_len = 512;

Wenn group_concat_max_len mehr als 512 ist, gibt die Abfrage das Byte [] ..__ zurück. Sie können jedoch eine Zeichenfolge übergeben.

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