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?
Direkt über dem Abfrageergebnis (links) sehen Sie +options
. Drücken Sie es und markieren Sie
BLOB-Inhalt anzeigen
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.
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
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')
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]);