mysql 如果處理貨幣金錢類型


我們知道,數據庫存金錢類型可以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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM