concat, int и utf8

Romantik

TeaM PHPClub
concat, int и utf8

Приветствую, уважаемые.
таблица utf_general_ci
в ней текстовове поле `name` utf_general_ci
и несколько числовых полей разных типов
`id` bigint(20)
`price` float
`space` int(11)

следуюущие запросы выводит корректно
SELECT name FROM...
SELECT * FROM...
SELECT CONCAT('>>', name, '<<') AS name FROM...

но вот если добавить в CONCAT числовое (что странно. с текстовым все ок) поле
SELECT CONCAT(name, ' - ', price) AS name FROM...
выводит билеберду а не utf8
в разных вариациях пробовал

проблему решил так:
SELECT CONCAT(name, ' - ', CONVERT(price using utf8)) AS name FROM...
но почему так?

Как можно глобально решить, что бы не переделывать все запросы?

Заранее благодарен за любые советы.
 
может быть, для этих целей и служит загадочное collation connection?

зря, кстати, `price` float
 
Скорее всего, никак не решить. CONCAT корректно работает, если ему известна кодировка. У поля price её нет, естественно. Следовательно, кодировку нужно специально указать.
 
пробую разные варианты
mysql_query("SET SESSION collation_connect='utf8'");
или
mysql_query("SET collation_connect='utf8'");
все тоже самое...
 
Здесь это не причем. collation_connect устанавливает кодировку соединения с БД. к CONCAT не имеет никакого отношения
 
понятно, спасибо
а как же тогда можно глобально решить проблему, не переписывая запросы?
 
в данном случае никак. а почему нужно их "переписывать"? что-то изменилось в структуре таблицы или еще где-то? когда отлаживал все работало?
 
нет, просто переход на UTF-8 происходит, хотелось бы с наименьшими потерями =)
 
вот-вот. поскольку он происходит, то необходимо будет кое-что подогнать. никуда не деться...
 
Сверху