mysql select concat (charfield, format (doublefield, 8)) выдает ошибку 1267 - PullRequest
2 голосов
/ 07 октября 2009

, что иронично по двум причинам: 1) потому что работает concat (charfield, doublefield) (это не имеет значения, когда одно из объединяемых полей является числовым) и 2) потому что ссылка mysql показывает это: CONCAT (str1 , str2, ...) в качестве прототипа для CONCAT и FORMAT это: "FORMAT (X, D) форматирует число X в такой формат, как '#, ###, ###. ##', округляя до D десятичные разряды, а возвращает результат в виде строки".

В отчаянии я попытался select concat(symbol, cast(format(closeprice,8) as char)), который сработал. Так что вы можете подумать: «Почему этот парень тратит наше время, он нашел что-то, что работает», и это правда. Но это не имеет смысла для меня, и поэтому я задавался вопросом, может ли кто-нибудь это прояснить?

Ответы [ 3 ]

4 голосов
/ 08 октября 2009

1267 - недопустимая смесь сопоставлений.Параметры сортировки (алфавитная сортировка) поля char и параметры сортировки строки, возвращаемой из FORMAT (вероятно, параметры сортировки по умолчанию вашего сервера БД), отличаются.

Измените параметры сортировки столбца или параметров по умолчанию сервера или выполните приведение.

1 голос
/ 05 ноября 2013

У меня была такая же проблема сегодня, и вот что у меня сработало:

Часть запроса:

CONCAT(payment_currency," ", CONVERT(FORMAT(payment_amount, 2) using utf8)) AS payment_gross_amount

Результат:

PHP 1,250.00

На случай, если кто-то столкнется с той же проблемой. :)

0 голосов
/ 21 ноября 2012

Попробуйте:

select concat(symbol, CONVERT(cast(format(closeprice,8) as char) USING utf8) COLLATE utf8_bin))

Поскольку вы не можете смешивать кодировку кодировки в функции CONCAT, такой как CONCAT (utf8_general_ci, utf8_bin).

...