DELIMITER $$ DROP FUNCTION IF EXISTS `ims`.`f_clear_string` $$ CREATE FUNCTION `ims`.`f_clear_string` (_str varchar(255)) RETURNS varchar(255) BEGIN declare ret varchar(255); SET ret = lower(REPLACE(REPLACE(_str,' ',''),'-','')); SET ret = REPLACE(ret, 'ą','a'); SET ret = REPLACE(ret, 'ż','z'); SET ret = REPLACE(ret, 'ś','s'); SET ret = REPLACE(ret, 'ź','z'); SET ret = REPLACE(ret, 'ę','e'); SET ret = REPLACE(ret, 'ć','c'); SET ret = REPLACE(ret, 'ń','n'); SET ret = REPLACE(ret, 'ł','l'); SET ret = REPLACE(ret, 'ó','o'); RETURN ret; END $$ DELIMITER ;
Mam takie zapytanie:
SELECT miasto, count(miasto) FROM ( SELECT f_clear_string(miasto) AS miasto FROM a UNION ALL SELECT f_clear_string(miasto) AS miasto FROM b UNION ALL SELECT f_clear_string(miasto) AS miasto FROM c UNION ALL SELECT f_clear_string(miasto) AS miasto FROM d UNION ALL SELECT f_clear_string(miasto) AS miasto FROM e ) s GROUP BY miasto 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:
a potem już nic. Czy wie ktoś o co chodzi?
SET ret = lower(REPLACE(REPLACE(_str,' ',''),'-',''));
MySQL wersja 5.0.66a-log, PHP4