Napisałem w mysql-u funkcje do zamiany polskich liter zwykłe litery.
  1. DELIMITER $$
  2.  
  3. DROP FUNCTION IF EXISTS `ims`.`f_clear_string` $$
  4. CREATE FUNCTION `ims`.`f_clear_string` (_str varchar(255)) RETURNS varchar(255)
  5. BEGIN declare ret varchar(255);
  6. SET ret = lower(REPLACE(REPLACE(_str,' ',''),'-',''));
  7. SET ret = REPLACE(ret, 'ą','a');
  8. SET ret = REPLACE(ret, 'ż','z');
  9. SET ret = REPLACE(ret, 'ś','s');
  10. SET ret = REPLACE(ret, 'ź','z');
  11. SET ret = REPLACE(ret, 'ę','e');
  12. SET ret = REPLACE(ret, 'ć','c');
  13. SET ret = REPLACE(ret, 'ń','n');
  14. SET ret = REPLACE(ret, 'ł','l');
  15. SET ret = REPLACE(ret, 'ó','o');
  16.  
  17. RETURN ret;
  18. END $$
  19.  
  20. DELIMITER ;


Mam takie zapytanie:
  1. SELECT miasto, count(miasto) FROM ( SELECT f_clear_string(miasto) AS miasto FROM a UNION ALL
  2. SELECT f_clear_string(miasto) AS miasto FROM b UNION ALL
  3. SELECT f_clear_string(miasto) AS miasto FROM c UNION ALL
  4. SELECT f_clear_string(miasto) AS miasto FROM d UNION ALL
  5. SELECT f_clear_string(miasto) AS miasto FROM e
  6. ) s
  7. GROUP BY miasto
  8. ORDER BY 1


Gdy zapytanie to wykonam z programu MySQL query browser to zwraca oczekiwane rezultaty, natomiast gdy to zapytanie wykonam w PHP za pomocą mysql_query to już jest zupełnie inaczej, tzn z nazwy miast są małymi literami, pousuwane są spacje i myślniki ale polskie litery pozostały, tak jakby z funkcji została wykonana tylko instrukcja:
  1. SET ret = lower(REPLACE(REPLACE(_str,' ',''),'-',''));
a potem już nic. Czy wie ktoś o co chodzi?

MySQL wersja 5.0.66a-log, PHP4