postgres - mysql concat rows with comma
MySQL y GROUP_CONCAT() longitud máxima (6)
Estoy usando GROUP_CONCAT()
en una consulta de MySQL para convertir varias filas en una sola cadena. Sin embargo, la longitud máxima del resultado de esta función es de 1024
caracteres.
Soy muy consciente de que puedo cambiar el group_concat_max_len
para aumentar este límite:
SET SESSION group_concat_max_len = 1000000;
Sin embargo, en el servidor que estoy usando, no puedo cambiar ningún parámetro. No utilizando la consulta anterior y no editando ningún archivo de configuración.
Entonces, mi pregunta es: ¿hay alguna otra manera de obtener el resultado de una consulta de varias filas en una sola cadena?
El parámetro correcto para establecer la longitud máxima es:
SET @@group_concat_max_len = value_numeric;
value_numeric
debe ser> 1024; por defecto, el valor group_concat_max_len
es 1024.
Incluya esta configuración en el archivo de configuración de xampp my.ini:
[mysqld]
group_concat_max_len = 1000000
Luego reinicie xampp mysql
La sintaxis correcta es mysql> SET @@global.group_concat_max_len = integer;
Si no tiene los privilegios para hacer esto en el servidor donde reside su base de datos, utilice una consulta como:
mySQL = "SET @@session.group_concat_max_len = 10000;"
o un valor diferente.
Línea siguiente:
SET objRS = objConn.Execute(mySQL)
sus variables pueden ser diferentes.
entonces
mySQL="SELECT GROUP_CONCAT(......);"
etc
Utilizo la última versión ya que no tengo los privilegios para cambiar el valor predeterminado de 1024 globalmente (usando cPanel).
Espero que esto ayude.
Puedes probar esto
SET GLOBAL group_concat_max_len = 1000000;
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'');
Esta consulta es un poco extraña pero no necesita otra consulta para inicializar la variable; y se puede incrustar en una consulta más compleja. Devuelve todos los ''field2'' separados por un punto y coma.
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;
SET SESSION group_concat_max_len = 1000000;
Es una configuración temporal, de sesión, alcance. Solo se aplica a la sesión actual. Deberías usarlo así.
SET SESSION group_concat_max_len = 1000000;
select group_concat(column) from table group by column
Puede hacer esto incluso al compartir hosting, pero cuando usa otra sesión, necesita repetir el comando SET SESSION
.