mysql 如果处理货币金钱类型

Posted 猪哥哥厉害

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于mysql 如果处理货币金钱类型的主要内容,如果未能解决你的问题,请参考以下文章

货币类型的算术溢出错误

我应该使用 NSDecimalNumber 来处理金钱吗?

php中金钱数据类型

首先在实体框架模型中使用货币类型

金钱应该使用啥数据类型

金融与金钱是同一个意思吗