• 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

  • 相关阅读:
    zeplin 登录效果实现
    instanceof 是如何工作的
    JavaScript版—贪吃蛇小组件
    C#+HtmlAgilityPack—糗事百科桌面版V2.0
    Google自定义搜索引擎
    百度网盘资源搜索器
    CSS元素类型
    CSS盒子模型
    Android调用Web服务
    无法将匿名方法转换为System.Delegate
  • 原文地址:https://www.cnblogs.com/zgghb/p/6380881.html
Copyright © 2020-2023  润新知