在实际工作中我们常常需要将数字进行格式化,比如将12.0073233变为12.01,或把12变为12.00,或把12变为0000012,这种格式之间的转换总结如下:

 
 

一,浮点数的转换——直接设置数据库中的字段信息

mysql提供了两个数据类型:numeric和decimal(可以近似的认为二都无区别),这两种数据类型可以轻松解决上面的问题:
NUMERIC 和 DECIMAL 类型被 MySQL 以同样的类型实现,这在 SQL92 标准中是允许的。他们用于保存对准确精度有重要要求的值,例如与金钱有关的数据。当以它们中的之一声明一个列时,精度和数值范围可以(通常是)被指定;例 如:salary DECIMAL(5,2)在这个例子中,5 (精度(precision)) 代表重要的十进制数字的数目,2 (数据范围(scale)) 代表在小数点后的数字位数。在这种情况下,因此,salary 列可以存储的值范围是从 -99.99 到 99.99。(实际上 MySQL 在这个列中可以存储的数值可以一直到 999.99,因为它没有存储正数的符号)。M 与D 对DECIMAL(M, D) 取值范围有影响(当超过范围时mysql会自动处理,这会导致数据不准确),所以在建表时要考虑的所存数据的大小范围。

在建表时直接指定字段信息,或建表之好更新字段信息:

创建表:create table test_number(a numeric(10,2), b DECIMAL(10,2))engine myisam charset utf8;

插入数据:insert into test_number values (12.06722,13.223343);

查找数据:select * from test_number;

结果如下:

可以看出,数据在数据库中已按要求的格式进行存储。

查看创建表过程:show create table test_number;

结果如下:

说明在Mysql内部,全部都是以decimal的方式建表的,所以可以说numeric和decimal是相同的

浮点数的转换——对查询数据格式化

1、format

可以通过mysql的FORMAT(X,D)就可以控制数据X的小数点为D位了

创建表:create table test_number2 (a float)engine myisam charset utf8;

插入数据:insert into test_number2 values ( 12.06722);

一般查询:select * from test_number2;

查询位数比原插入时多:select format(a,10) from test_number2;

查询位数比原插入时少:select format(a,2) from test_number2;

可以看出,以这种方式可以实现查询数据的格式化,但是仍是有问题

 
 

format的问题

测试 SELECT FORMAT(12562.6655,2);

结果:12,562.67

查看文档:Formats the number X to a format like '#,###,###.##', rounded to D decimal places, and returns the result as a string. If D is 0, the result has no decimal point or fractional part.意思是整数部分超过三位的时候以逗号分割,并且返回的结果是string类型的。他会四舍五入的方式,但是得到的结果是string类型,不再是数字类型。

没有达到预期结果,想要的结果不要以逗号分隔,

2、truncate

select truncate(4545.1366,2);

结果:4545.13,直接截取不四舍五入,还是有问题。

3、 convert

,2);

结果:4545.14,得到的结果仍是数据,所以在对数据查询格式化时应采用这种方法

select convert(a,decimal) from test_number2;

select convert(a,decimal(10,2)) from test_number2;

 
 

 
 

三、整数的转换——直接设置数据库中的字段信息

语法示例:

create table stu ( stu_id int(5) unsigned zerofill not null default 0 primary key,class_id int(5))

 
 

四,整数数的转换——对查询数据格式化

 
 

select lpad(stu_id,10,'0') lpad(class_id,10,'0') from stu;

 

 
 

select lpad(stu_id,10,0), lpad(class_id,10,0) from stu;

 
 

 
 

 
 

 
 

 
 

控制mysql数字转换的更多相关文章

  1. C# 8.0和.NET Core 3.0高级编程 分享笔记三:控制流程和转换类型

    控制流程和转换类型 本章的内容主要包括编写代码.对变量执行简单的操作.做出决策.重复执行语句块.将变量或表达式值从一种类型转换为另一种类型.处理异常以及在数值变量中检查溢出. 本章涵盖以下主题: 操作 ...

  2. 在 shell 脚本获取 ip、数字转换等网络操作

    在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...

  3. numtoyminterval函数——数字转换函数

      numtoyminterval函数——数字转换函数 ----转至51CTO 水滴的博客  语法:NUMTOYMINTERVAL ( n , 'char_expr' )              c ...

  4. 比较java与c语言中数字转换成字符的不同

    java java中将数字转换成字符非常方便,只要用一个"+"然后在跟一个空格行了.比如,你输入一个122 ,就会变成"122 ". import java.u ...

  5. ORACLE数字转换人民币大写

    ORACLE 数字转换人民币大写     示例.   数字                    :183066999230.68 人民币大写        :壹仟捌佰参拾亿陆仟陆佰玖拾玖万玖仟贰佰参 ...

  6. MySQL数字类型中的三种常用种类

    数字类型 MySQL数字类型按照我的分类方法分为三类:整数类.小数类和数字类. MySQL数字类型之一我所谓的“数字类” 就是指 DECIMAL 和 NUMERIC,它们是同一种类型.它严格的说不是一 ...

  7. Duanxx的C++学习 : 数字转换String

    下面是这两个数字转换String道路.件:sstream string num2str1(unsigned int num) { stringstream ss; ss<<num; ret ...

  8. 算法--java实现将数字转换成人民币大写(迅雷面试题)

    今天去迅雷面试,是个数字转换成人民币的算法题: public class Rmb { /** * 人民币的基本信息和操作 * * @author soyoungboy * @version 1.0 * ...

  9. js字符串转换成数字与数字转换成字符串的实现方法

    转载:点击查看地址 js字符串转换成数字 将字符串转换成数字,得用到parseInt函数.parseInt(string) : 函数从string的开始解析,返回一个整数. 举例:parseInt(' ...

随机推荐

  1. [Usaco2011 Dec]Grass Planting

    Description Farmer John has N barren pastures connected by N-1 bidirectional roads, such that there ...

  2. "字节跳动杯"2018中国大学生程序设计竞赛-女生专场

    口算训练 #include <iostream> #include <algorithm> #include <cstring> #include <cstd ...

  3. java 8 lamda Stream的Collectors.toMap 参数

    使用toMap()函数之后,返回的就是一个Map了,自然会需要key和value.toMap()的第一个参数就是用来生成key值的,第二个参数就是用来生成value值的.第三个参数用在key值冲突的情 ...

  4. Django (九) 项目开发流程&项目架构

    项目开发流程&项目架构 1. 软件开发的一般流程 1. 需求分析及确认: 由需求分析工程师与客户确认甚至挖掘需求.输出需求说明文档. ​ 2. 概要设计及详细设计: 开发对需求进行概要设计,包 ...

  5. String的内存和intern()方法

    一.关于常量池 字符串在Java中用的非常得多,Jvm为了减少内存开销和提高性能,使用字符串常量池来进行优化. 在jdk1.7之前(不包括1.7),Java的常量池是在方法区的地方,方法区是一个运行时 ...

  6. Spark Mllib里如何将数据集按比例随机地分成trainData、testData和validationData数据集(图文详解)

    不多说,直接上干货! 具体详情见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的第11章 电影推荐引擎

  7. PHP知识点总结2

    PHP5数据类型 String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值). 字符串 你可 ...

  8. localStorage 和 sessionStorage的区别

    存储对象: 在主流浏览器中,添加了html5  Web Storage API 的接口,storage是一个存储对象,它包括会话存储(session storage)或本地存储(local stora ...

  9. kafka安装和使用

    kafka安装和启动 kafka的背景知识已经讲了很多了,让我们现在开始实践吧,假设你现在没有Kafka和ZooKeeper环境. Step 1: 下载代码 下载0.10.0.0版本并且解压它. &g ...

  10. python经典一百道习题(转自奶酪博客)

    无论学习哪门计算机语言,只要把100例中绝大部分题目都做一遍,就基本掌握该语言的语法了. [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #Filena ...