3

这在两个方面具有讽刺意味,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))了,它奏效了。所以你可能会想,“为什么这家伙浪费我们的时间,他发现了一些有用的东西”,这是真的。但这对我来说没有意义,所以我想知道是否有人可以清除它?

4

3 回答 3

4

1267 是非法的归类混合。charfield 的排序规则(字母排序)和从 FORMAT 返回的字符串的排序规则(可能是您的数据库服务器的默认排序规则)是不同的。

修改列的排序规则或服务器默认排序规则,或者进行强制转换。

于 2009-10-07T20:13:34.090 回答
1

我今天遇到了同样的问题,这对我有用:

查询部分:

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

结果:

PHP 1,250.00

以防万一有人也遇到同样的问题。:)

于 2013-11-05T07:49:49.930 回答
0

尝试:

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

因为您不能在 CONCAT(utf8_general_ci, utf8_bin) 等 CONCAT 函数中混合字符集编码。

于 2012-11-21T12:37:34.977 回答