繁体   English   中英

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

[英]mysql select concat(charfield, format(doublefield,8)) gives error 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))我尝试了select concat(symbol, cast(format(closeprice,8) as char)) ,这是有效的。 所以您可能会想,“为什么这个人浪费我们的时间,他发现了一些可行的方法”,这是事实。 但这对我来说没有意义,所以我想知道是否有人可以清除它?

1267是排序规则的非法组合。 charfield的排序规则(按字母顺序排序)和从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(utf8_general_ci,utf8_bin)这样的CONCAT函数中混合使用字符集编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM