mysql select concat(charfield,format(doublefield,8))给出错误1267

mysql select concat(charfield,format(doublefield,8))给出错误1267,mysql,sql,format,concat,mysql-error-1267,Mysql,Sql,Format,Concat,Mysql Error 1267,这在两个方面具有讽刺意味,1是因为concatcharfield,doublefield可以工作它不介意要连接的字段之一是数字,2是因为mysql引用显示:CONCATstr1,str2,。。。作为CONCAT和this:FORMATX的原型,D将数字X格式化为类似“,”的格式,四舍五入到D位小数,并将结果作为字符串返回 在绝望中,我试着选择concatsymbol,castformatcloseprice,8作为char,这很有效。所以你可能会想,为什么这个家伙在浪费我们的时间,他发现了一些有

这在两个方面具有讽刺意味,1是因为concatcharfield,doublefield可以工作它不介意要连接的字段之一是数字,2是因为mysql引用显示:CONCATstr1,str2,。。。作为CONCAT和this:FORMATX的原型,D将数字X格式化为类似“,”的格式,四舍五入到D位小数,并将结果作为字符串返回


在绝望中,我试着选择concatsymbol,castformatcloseprice,8作为char,这很有效。所以你可能会想,为什么这个家伙在浪费我们的时间,他发现了一些有用的东西,这是真的。但这对我来说毫无意义,所以我想知道是否有人能澄清这一点?

1267是非法混合排序规则。charfield的排序规则字母顺序排序和从FORMAT返回的字符串排序规则可能与db服务器的默认排序规则不同

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

尝试:

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

因为您可能不会在CONCAT函数(如CONCATutf8\u general\u ci、utf8\u bin)中混合字符集编码。

我今天也遇到了同样的问题,这就是我的工作原理:

查询部分:

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

PHP 1,250.00
以防有人也遇到同样的问题