记录下今天在项目中出现的一个小问题。

  将通过除运算获得的结果数据进行保留两位小数的处理时,我用了MySQL 的 FORMAT(X, D)函数,之前一直没有出现问题,但是由于周期性更新的数据库中突然出现了一个绝对值很大的负数(如下异常中的-58535.53),用基于spring 的 Java 代码将查询结果展示在jsp页面时发生如下异常:

很明显是因为数据格式转换的问题,仔细看发现小数点向前3位处使用了逗号进行了分割。之前一直以为 FORMAT(X, D)  函数只是用来处理小数位取舍的,由于在绝对值较小的时候不会出现逗号进行分割,所以并没有去深究其用法。今天突然出现的问题让我有点儿懵,在Navicat客户端查询也显示有逗号分割,思前想后却始终没想到这个函数其实是格式化函数,最终还是请教项目组长帮我看出来的,他直接来一句“你把它格式化干嘛!”。一语惊醒梦中人,遂立刻百度,发现FORMAT(X, D) 其实是按 ' #,###,###.## ' 这样的格式对数据进行格式化的函数,函数参数 X 就是要格式化的数据,D 表示经过四舍五入后小数点后保留几位;如果数值的整数部分超过3位,则会从小数点往前每3位以逗号进行分割,而且数值本身也会被格式化为字符串类型。所以,在我的程序中,参数D的值为2,所以才会得到 -58,535.53 的结果,而在程序中我是通过结果集对象rs.getDouble() 来获取数据的,所以会出现类型转换错误。

  我的解决方法是将FORMAT(X,D) 函数替换为 ROUND(X, D),二者在数值处理上是一样的,即都会按照“四舍五入”对小数位进行处理,但ROUND不会将数值的整数部分格式化为固定类型的字符串,而是保留纯数值形式。

  此外,在小数位处理上,除了FORMAT(X, D) 和 ROUND(X, D) 外,与它们相近的还有TRUNCATE(X, D) 函数,只是该函数会直接按指定的 D 对数值进行截取,而不会进行“四舍五入”处理。例如,TRUNCATE(30.8923, 1) 的结果为30.8,而不是30.9。

MySQL小记——数据格式化的更多相关文章

  1. 数据库数据格式化之Kettle Spoon

    前言 现在的数据库种类越来越多,数据库备份的格式也越来越复杂,所以数据格式化一直是一个老生常谈的问题.据库备份文件格式那么多,既有SQL的,也有BAK的,还有TXT的等.数据库种类也有很多,MySQL ...

  2. 项目中整合第三方插件与SpringMVC数据格式化关于ip地址

    一.Bootstrap 响应式按钮 <div calss="col-sm-2"> <button class="btn btn-default btn- ...

  3. mysql 插入数据失败防止自增长主键增长的方法

    mysql设置了自增长主键ID,插入失败的那个自增长ID也加一的,比如失败5个,下一个成功的不是在原来最后成功数据加1,而是直接变成加6了,失败次数一次就自动增长1了,能不能让失败的不增长的? 或者说 ...

  4. MySQL mysqldump数据导出详解

    介绍 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具:它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有的参数详细说明 ...

  5. MySQL数据库数据存放位置修改

    MySQL数据库数据存放位置修改 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方 ...

  6. 在Linux环境下,将Solr部署到tomcat7中,导入Mysql数据库数据, 定时更新索引

    什么是solr solr是基于Lucene的全文搜索服务器,对Lucene进行了扩展优化. 准备工作 首先,去下载以下软件包: JDK8:jdk-8u60-linux-x64.tar.gz TOMCA ...

  7. 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟

    使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 Sqoop 大数据 Hive HBase ETL 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 ...

  8. mysql导入数据到oracle中

    mysql导入数据到oracle中. 建立Oracle表: CREATE TABLE "GG_USER" ( "USERID" BYTE) NOT NULL, ...

  9. SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显

    在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1. ...

随机推荐

  1. django -xadmin 详解 功能实现及orm 的复习

    django 在xadmin中自定义内容的变量及优化汇总 一: 首先下载xadmin pip install git+git://github.com/sshwsfc/xadmin.git@djang ...

  2. Python3基础 yield send 变量名= yield i

             Python : 3.7.3          OS : Ubuntu 18.04.2 LTS         IDE : pycharm-community-2019.1.3    ...

  3. docker安装并运行redis

    拉取镜像: [mall@VM_0_7_centos ~]$ sudo docker pull redis:3.2 [sudo] password for mall: 3.2: Pulling from ...

  4. 泡泡一分钟:GEN-SLAM - Generative Modeling for Monocular Simultaneous Localization and Mapping

    张宁  GEN-SLAM - Generative Modeling for Monocular Simultaneous Localization and Mapping GEN-SLAM  - 单 ...

  5. [转]Ubuntu18.04下安装搜狗输入法

    鏈接地址:https://blog.csdn.net/lupengCSDN/article/details/80279177

  6. 一码学程 10284 排队找bug 题解 单调队列 或者 线段树RMQ

    注:只是看到题目,未评测,所以不确定代码正确性,但是算法思路没有问题 描述 同学们的bug还真是多啊,orz... 春节期间大家存下的bug都来找肖老师解决了. 每个人都有bug,但是肖老师却只有一个 ...

  7. consul删除无效实例

    consul删除无效实例删除无效服务删除无效节点删除无效服务http://127.0.0.1:8500/v1/agent/service/deregister/test-9c14fa595ddfb8f ...

  8. 第07组 Beta冲刺(3/4)

    队名:秃头小队 组长博客 作业博客 组长徐俊杰 过去两天完成的任务:学习了很多东西 Github签入记录 接下来的计划:继续学习 还剩下哪些任务:后端部分 燃尽图 遇到的困难:自己太菜了 收获和疑问: ...

  9. [转帖]在 k8s 中通过 Ingress 配置域名访问

    在 k8s 中通过 Ingress 配置域名访问 https://juejin.im/post/5db8da4b6fb9a0204520b310 在上篇文章中我们已经使用 k8s 部署了第一个应用,此 ...

  10. flask框架(一)——初识Flask

    一.初识flask 1.什么是Flask:Flask是一个python编写的web框架,只是一个内核,默认依赖2个外部库:jinja2模板引擎和WSGI工具集--Werkzeug. 2.安装flask ...