[英]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.