Ich verwende GROUP_CONCAT()
in einer MySQL-Abfrage, um mehrere Zeilen in eine einzelne Zeichenfolge zu konvertieren. Die maximale Länge des Ergebnisses dieser Funktion beträgt jedoch 1024
Zeichen.
Mir ist sehr wohl bewusst, dass ich den Parameter ändern kann group_concat_max_len
, um dieses Limit zu erhöhen:
SET SESSION group_concat_max_len = 1000000;
Auf dem von mir verwendeten Server kann ich jedoch keine Parameter ändern. Nicht durch Verwendung der vorhergehenden Abfrage und nicht durch Bearbeiten einer Konfigurationsdatei.
Meine Frage lautet also: Gibt es eine andere Möglichkeit, die Ausgabe einer mehrzeiligen Abfrage in eine einzelne Zeichenfolge zu übertragen?
mysql
group-concat
ZeWaren
quelle
quelle
SET
Anweisung nicht zum Ändern einer Sitzungsvariablen verwenden.Antworten:
ist eine temporäre Einstellung für den Sitzungsbereich. Dies gilt nur für die aktuelle Sitzung. Sie sollten es so verwenden.
Sie können dies auch beim Freigeben von Hosting tun. Wenn Sie jedoch eine andere Sitzung verwenden, müssen Sie den
SET SESSION
Befehl wiederholen .quelle
SET GLOBAL group_concat_max_len=6999
um die Einstellung für alle Abfragen gültig zu machenDer richtige Parameter zum Einstellen der maximalen Länge ist:
value_numeric
muss> 1024 sein; Standardmäßig ist dergroup_concat_max_len
Wert 1024.quelle
group_concat_max_len
auf so niedrig wie 4 . ( MySQL-Dokumente ). "value_numeric
muss> = 4 sein" ist hier der Fall. Ich habe dies tatsächlich verwendet, um zu testen, was passiert, wenn Sie dengroup_concat_max_len
Wert überschreiten .SET
Nach einem Neustart wirkt sich keine Abfrage auf die Einstellungen aus.Fügen Sie diese Einstellung in die Konfigurationsdatei xampp my.ini ein:
Starten Sie dann xampp mysql neu
quelle
Sie können dies versuchen
quelle
Die korrekte Syntax lautet mysql>
SET @@global.group_concat_max_len = integer;
Wenn Sie auf dem Server, auf dem sich Ihre Datenbank befindet, nicht über die entsprechenden Berechtigungen verfügen, verwenden Sie eine Abfrage wie:
mySQL =
"SET @@session.group_concat_max_len = 10000;"
oder einen anderen Wert.Nächste Zeile:
SET objRS = objConn.Execute(mySQL)
Ihre Variablen können unterschiedlich sein.dann
mySQL="SELECT GROUP_CONCAT(......);"
usw. verwendeich die letzte Version, da ich nicht die Berechtigungen habe, den Standardwert von 1024 global zu ändern (mit cPanel).
Hoffe das hilft.
quelle
Diese Abfrage ist etwas seltsam, benötigt jedoch keine weitere Abfrage, um die Variable zu initialisieren. und es kann in eine komplexere Abfrage eingebettet werden. Es werden alle 'Felder2' durch ein Semikolon getrennt zurückgegeben.
quelle