mysql select concat(charfield, format(doublefield,8)) выдает ошибку 1267

Что иронично по двум причинам: 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 ответа

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

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

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

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

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

Результат:

PHP 1,250.00

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

Пытаться:

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

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

Другие вопросы по тегам