我們知道,數據庫存金錢類型可以float、double、decimal ,相比較而已decimal 最好用。
好吧, 我們公司用的分為單位, 類型 用bigint 存取,操作的時候到是很方便, 展示的時候就得 轉。
結果就出現了bug
先看問題,
數據庫讀取金錢, 保留兩位小數。
<select id="findSumMoney" resultType="java.lang.Double"> SELECT FORMAT(IFNULL(sum(money), 0) / 100, 2) FROM r_order WHERE uid = #{uid} AND state = 1 AND pay_type IN (1, 2,12) GROUP BY uid </select>
結果當金錢大於1000 ,用 format 轉換, 自動變成 1,000.00
然后程序打出異常。不能轉成此類型,原來這種轉化 方法是大於1000, 自動加 逗號變成 string類型, double接收不了, 由於不想改代碼,
最后這么解決的;用convert 函數:
<select id="findSumMoney" resultType="java.lang.Double"> SELECT convert(IFNULL(sum(money)/100, 0),DECIMAL(9,2)) FROM r_order WHERE uid = #{uid} AND state = 1 AND pay_type IN (1, 2,12) GROUP BY #{uid} </select>
解決 返回的是1000.00