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...
но почему так?

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

Заранее благодарен за любые советы.
 

Фанат

oncle terrible
Команда форума
может быть, для этих целей и служит загадочное collation connection?

зря, кстати, `price` float
 

vinslave

Новичок
Скорее всего, никак не решить. CONCAT корректно работает, если ему известна кодировка. У поля price её нет, естественно. Следовательно, кодировку нужно специально указать.
 

Romantik

TeaM PHPClub
пробую разные варианты
mysql_query("SET SESSION collation_connect='utf8'");
или
mysql_query("SET collation_connect='utf8'");
все тоже самое...
 

vinslave

Новичок
Здесь это не причем. collation_connect устанавливает кодировку соединения с БД. к CONCAT не имеет никакого отношения
 

Romantik

TeaM PHPClub
понятно, спасибо
а как же тогда можно глобально решить проблему, не переписывая запросы?
 

vinslave

Новичок
в данном случае никак. а почему нужно их "переписывать"? что-то изменилось в структуре таблицы или еще где-то? когда отлаживал все работало?
 

Romantik

TeaM PHPClub
нет, просто переход на UTF-8 происходит, хотелось бы с наименьшими потерями =)
 

vinslave

Новичок
вот-вот. поскольку он происходит, то необходимо будет кое-что подогнать. никуда не деться...
 
Сверху