MySQL小记——数据格式化
记录下今天在项目中出现的一个小问题。
将通过除运算获得的结果数据进行保留两位小数的处理时,我用了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小记——数据格式化的更多相关文章
- 数据库数据格式化之Kettle Spoon
前言 现在的数据库种类越来越多,数据库备份的格式也越来越复杂,所以数据格式化一直是一个老生常谈的问题.据库备份文件格式那么多,既有SQL的,也有BAK的,还有TXT的等.数据库种类也有很多,MySQL ...
- 项目中整合第三方插件与SpringMVC数据格式化关于ip地址
一.Bootstrap 响应式按钮 <div calss="col-sm-2"> <button class="btn btn-default btn- ...
- mysql 插入数据失败防止自增长主键增长的方法
mysql设置了自增长主键ID,插入失败的那个自增长ID也加一的,比如失败5个,下一个成功的不是在原来最后成功数据加1,而是直接变成加6了,失败次数一次就自动增长1了,能不能让失败的不增长的? 或者说 ...
- MySQL mysqldump数据导出详解
介绍 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具:它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有的参数详细说明 ...
- MySQL数据库数据存放位置修改
MySQL数据库数据存放位置修改 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方 ...
- 在Linux环境下,将Solr部署到tomcat7中,导入Mysql数据库数据, 定时更新索引
什么是solr solr是基于Lucene的全文搜索服务器,对Lucene进行了扩展优化. 准备工作 首先,去下载以下软件包: JDK8:jdk-8u60-linux-x64.tar.gz TOMCA ...
- 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟
使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 Sqoop 大数据 Hive HBase ETL 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 ...
- mysql导入数据到oracle中
mysql导入数据到oracle中. 建立Oracle表: CREATE TABLE "GG_USER" ( "USERID" BYTE) NOT NULL, ...
- SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显
在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1. ...
随机推荐
- [转]Spring事务嵌套引发的血案---Transaction rolled back because it has been marked as rollback-only
原文地址:https://blog.csdn.net/f641385712/article/details/80445912 1.概述 想必大家一想到事务,就想到ACID,或者也会想到CAP.但笔者今 ...
- thinkphp5---安装到宝塔出现Warning: require(): open_basedir错误
使用thinkphp5安装到宝塔的linux上,出现以下错误: Warning: require(): open_basedir restriction in effect. File(/www/ww ...
- Python高级笔记(九)Python使用MySQL
1. MySQL基本使用 1.1 数据库简介 Mysql: 关系型数据库,做网站 redis:当作缓存 mongodb:非关系型数据库,做爬虫 SQL语句: DQL:数据查询语言,用于对数据进行查询, ...
- 西门子PLC1200内使用SCL实现简化版PID算法
西门子自带的PID效果很好,但是会比较吃性能,使用次数有限,很多地方需要PID但不需要这么精准的PID,所以网上找个简单的算法自己调用. 新建数据类型 前三个就是PID三个参数 新建FC块: #PID ...
- InfluxDB入门
InfluxDB是一个用于存储和分析时间序列数据的开源数据库 时序数据是基于时间的一系列的数据 时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入.持久化.多纬度的聚合查询等基本功能 ...
- CentOS安装部署jumperserver(堡垒机)
可以参考官方的文档:http://docs.jumpserver.org/zh/docs/introduce.html 测试环境 系统: CentOS 7 IP: 192.168.244.144 设置 ...
- BugkuCTF~Misc~WriteUp
1.签到 get flag: Qftm{You should sign in} 2.这是一张单纯的图片 查看图片十六进制 提去特殊字符串进行解码 get flag: key{you are right ...
- 使用TCP的协议有哪些?使用UDP的协议有哪些?
运行于TCP协议之上的协议: HTTP协议:超文本传输协议,用于普通浏览 HTTPS协议:安全超文本传输协议,身披SSL外衣的HTTP协议 FTP协议:文件传输协议,用于文件传输 POP3协议:邮局协 ...
- python类型检测最终指南--Typing模块的使用
正文共:30429 字 预计阅读时间:76分钟 原文链接:https://realpython.com/python-type-checking/ 作者:Geir Arne Hjelle 译者:陈祥安 ...
- day27——面向对象的总结、异常处理
day27 面向对象的总结 异常处理 错误的分类 语法错误 if if 2>1 print(222) dic = {"name"; "alex"} 逻辑错 ...