24 Stimmen

Mysql group_concat bringt nicht die gesamten Daten

Ich verwende die folgende Abfrage und nutze die group_concat Funktion. Manchmal wird jedoch die Daten in der answers Spalte abgeschnitten; das bedeutet, dass ich nicht alle Daten erhalte, am Ende ist es einfach abgeschnitten.

Ich vermute, es könnte etwas mit dem Datentyp zu tun haben...kann er in einen größeren Datentyp umgewandelt werden? Aktuell ist der Datentyp von Other1 text

 select SiteName, 
case 
when group_concat(Other1) is not null 
  then  group_concat( cast(Other1 AS BLOB)) 
when group_concat(Other1) is null
  then  'Keine Antwort vorhanden'
end
 'answers'
from disparities_community_partnerships
where QuarterId=2
group by SiteName

37voto

RichardTheKiwi Punkte 102469

http://dev.mysql.com/doc/refman/5.0/de/group-by-functions.html#function_group-concat

Das Ergebnis wird auf die maximale Länge gekürzt, die durch die Systemvariable group_concat_max_len festgelegt ist, die standardmäßig den Wert 1024 hat. Der Wert kann erhöht werden, obwohl die effektive maximale Länge des Rückgabewerts durch den Wert von max_allowed_packet eingeschränkt ist. Die Syntax zur Änderung des Werts von group_concat_max_len zur Laufzeit lautet wie folgt, wobei val eine positive Ganzzahl ist

SET [GLOBAL | SESSION] group_concat_max_len = val;

6voto

Mahendra Jella Punkte 4990

Noch ein Beispiel Führen Sie es so aus

SET GLOBAL  group_concat_max_len = 5555555;
 SELECT SiteName, 
CASE 
WHEN group_concat(Other1) IS NOT NULL 
  THEN  group_concat( cast(Other1 AS BLOB)) 
WHEN group_concat(Other1) IS NULL
  THEN  'Keine Antwort vorhanden'
END
 'Antworten'
FROM disparities_community_partnerships
WHERE QuarterId=2
GROUP BY SiteName

3voto

cksahu Punkte 131

Setzen Sie vor Ihrer Abfrage den group_concat_max_len:

SET GLOBAL group_concat_max_len = 9999999;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X