Używam tę kwerendę, aby produkować menu archiwum bloga, tak jak poniżej:SQL CONCAT - Dziwne znaki - ale ja nie śmieję
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))
oczekiwany wynik:
January 2012 103
February 2012 87
March 2012 23
April 2012 99
Rzeczywiste wyniki:
hrabia jest poprawna, ale zamiast psychicznego orientalne, to SHO Przeczytałeś:
May 2012 1
Jak mogę pozbyć się zabawnych postaci i zamiast tego mieć angielski?
Po uruchomieniu tego zapytania w phpMyAdmin, znaki są w porządku.
UPDATE
Właśnie próbował działa conn.Execute ("SET lc_time_names = 'en_US';") i nie rozwiąże problemu. Aby to sprawdzić, użyłem conn.Execute ("SELECT @@ lc_time_names;") i zwróciło "en_US".
Kolejna aktualizacja
wyszukiwania na forach MySQL dla zagadnień pokrewnych, znalazłem innego faceta marudzenie o tym samym numerze. MySQL guru powiedział:
„To jest słynny serwer (niesławny) zwraca błędne typy dla CONCAT z szeregu i ciąg Trzeba użyć (CAST) formularz do tego celu pracy, kierowca. nie mogę powiedzieć, jaki jest prawdziwy typ ".
Nie jestem pewien, co to jest obsada i jak rozwiązać ten problem.
+ 1 dla tytułu: P – Oleksi
+1 dla "orientu mentalnego" ': P'. – Bojangles
Co to jest * najbardziej banalne * zapytanie, które odtwarza problem "zabawnych" znaków? Powyższe zapytanie to 1. albo zapytanie minimalne (które powinno być określone), albo; 2. zawiera pęczek niepotrzebnego SQL ('GROUP BY',' CONCAT', 'MONTHNAME', itp.). –