MySQL i grupa CONCAT () maksymalna długość
Używam GROUP_CONCAT()
W zapytaniu MySQL do konwersji wielu wierszy w pojedynczy ciąg znaków.
Jednak maksymalna długość wyniku tej funkcji to 1024
znaki.
Jestem bardzo świadomy, że mogę zmienić param group_concat_max_len
, aby zwiększyć ten limit:
SET SESSION group_concat_max_len = 1000000;
Jednak na serwerze, którego używam, nie mogę zmienić żadnego param. Nie używając poprzedniego zapytania i nie edytując żadnego pliku konfiguracyjnego.
Więc moje pytanie brzmi:: Czy istnieje inny sposób na uzyskanie wyjścia wielokrotnego zapytanie wiersza do pojedynczego ciągu?6 answers
SET SESSION group_concat_max_len = 1000000;
Jest tymczasowym, sesyjnym zakresem, ustawieniem. Dotyczy to tylko bieżącej sesji, powinieneś jej używać w ten sposób.
SET SESSION group_concat_max_len = 1000000;
select group_concat(column) from table group by column
Możesz to zrobić nawet podczas współdzielenia hostingu, ale gdy używasz innej sesji, musisz powtórzyć polecenie SET SESSION
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-19 13:12:00
Poprawnym parametrem do ustawienia maksymalnej długości jest:
SET @@group_concat_max_len = value_numeric;
value_numeric
musi być > 1024; domyślnie wartością group_concat_max_len
jest 1024.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-24 21:58:26
Włącz to ustawienie w xampp my.plik konfiguracyjny ini:
[mysqld]
group_concat_max_len = 1000000
Następnie uruchom ponownie xampp mysql
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-09 13:55:17
Prawidłowa składnia to mysql> SET @@global.group_concat_max_len = integer;
Jeśli nie masz uprawnień do tego na serwerze, na którym znajduje się Twoja baza danych, użyj zapytania typu:
mySQL="SET @@session.group_concat_max_len = 10000;"
lub inna wartość.
Następna linia:SET objRS = objConn.Execute(mySQL)
Twoje zmienne mogą się różnić.
wtedymySQL="SELECT GROUP_CONCAT(......);"
etc
Używam ostatniej wersji, ponieważ nie mam uprawnień do zmiany domyślnej wartości 1024 globalnie (za pomocą cPanel).
Mam nadzieję, że to pomoże.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-31 06:42:47
Możesz spróbować tego
SET GLOBAL group_concat_max_len = 1000000;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-26 15:51:26
CREATE TABLE some_table (
field1 int(11) NOT NULL AUTO_INCREMENT,
field2 varchar(10) NOT NULL,
field3 varchar(10) NOT NULL,
PRIMARY KEY (`field1`)
);
INSERT INTO `some_table` (field1, field2, field3) VALUES
(1, 'text one', 'foo'),
(2, 'text two', 'bar'),
(3, 'text three', 'data'),
(4, 'text four', 'magic');
To zapytanie jest trochę dziwne, ale nie potrzebuje innego zapytania, aby zainicjować zmienną; i może być osadzone w bardziej złożonym zapytaniu. Zwraca wszystkie pola ' 2 ' oddzielone średnikiem.
SELECT result
FROM (SELECT @result := '',
(SELECT result
FROM (SELECT @result := CONCAT_WS(';', @result, field2) AS result,
LENGTH(@result) AS blength
FROM some_table
ORDER BY blength DESC
LIMIT 1) AS sub1) AS result) AS sub2;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-11 20:59:45