with inner group_concat columns array mysql sql collation concat

inner - mysql concat rows with comma



SQL CONCAT-Personajes divertidos-pero no me estoy riendo (3)

Estoy usando esta consulta para crear un menú de archivo de blog, como por ejemplo:

SELECT CONCAT( MONTHNAME(published) , '' '' , YEAR(published)) AS monthyear, COUNT(*) AS total FROM blog_articles WHERE status = ''Online'' AND Year(published) = 2012 GROUP BY CONCAT( MONTHNAME(published) , '' '' , YEAR(published))

Resultado Esperado:

January 2012 103 February 2012 87 March 2012 23 April 2012 99

Resultado actual:

El conteo es correcto pero en lugar del mental oriental, debería leer:

May 2012 1

¿Cómo puedo deshacerme de los personajes divertidos y tener inglés en su lugar?

Cuando ejecuto esta consulta en phpMyAdmin, los caracteres están bien.

ACTUALIZAR

Acabo de intentar ejecutar conn.Execute ("SET lc_time_names = ''en_US'';") y no resolví el problema. Para comprobarlo, utilicé conn.Execute ("SELECT @@ lc_time_names;") y devolvió "en_US".

Otra actualización

Al buscar en los foros de MySQL problemas relacionados, encontré a otro tipo quejándose del mismo problema. Un gurú de MySQL dijo:

"Este es el servidor famoso (infame) que devuelve tipos incorrectos para CONCAT de un número y una cadena. Uno tiene que usar el formulario (emitido) para que esto funcione, el controlador no puede decir cuál es el tipo real".

No estoy seguro de qué es el reparto o cómo solucionar este problema.


Cambie su ubicación a inglés entonces. Lo siguiente también es SQL.

SET lc_time_names = ''en_US'';

Desde aqui


Parece que tienes un conjunto lc_time_names "divertido".

Tratar:

SET lc_time_names = ''en_US'';

antes de ejecutar la consulta.


Servidor tonto, las matemáticas son para los números.

CAST() CAST (enum_col AS CHAR): emite un valor como un tipo determinado

SELECT CONCAT( CAST(MONTHNAME(published) as char) , '' '' , CAST(YEAR(published)) as char) AS monthyear, COUNT(*) AS total FROM blog_articles WHERE status = ''Online'' AND Year(published) = 2012 GROUP BY CONCAT( MONTHNAME(published) , '' '' , YEAR(published))

DATE_FORMAT() También puede probar la función DATE_FORMAT (AÑO (publicado), ''% Y'') en lugar de CAST.