簡體   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