在实际工作中我们常常需要将数字进行格式化,比如将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. jar工具的使用

  2. java简单操作redis数据库

    package RedisTest; import redis.clients.jedis.Jedis; public class RedisTest { private static String ...

  3. AKOJ-2037-出行方案

    链接:https://oj.ahstu.cc/JudgeOnline/problem.php?id=2037 题意: 安科的夏天真是不一般的热,避免炎热,伍学长因此想为自己规划一个校园出行方案,使得从 ...

  4. 洛谷 P1094 纪念品分组

    P1094 纪念品分组 先按价格对纪念品排序(这里是从大到小),然后从两端向中心开始配对,有两个变量i和j,表示正在处理的两个纪念品编号,开始时i=1,j=n,如果a[i]+a[j]>w则第i贵 ...

  5. 项目用Git上传到coding

    关于这样的东西,网上很多教程,这里就结合自己看的还有自己的例子来说明一下吧: 1.你得下载一个git软件并成功安装 2.生成ssh: 关于这个,我觉得似乎不是一定的,因为通过https也可以连接到co ...

  6. JavaScript Allongé 第一呷 :基础函数 (2)

    啊!我想要有一个参数 到现在为止,我们已经了解了没有参数的函数.只说我们的函数没有任何参数,甚至还没说参数是什么.大多数程序员非常熟悉参数,中学数学就讨论这个了.所以你知道他们是什么,而我也知道你知道 ...

  7. Railroad UVALive - 4888 记忆化搜索

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  8. CocoaPods 提交自己的库

    今想把自己写的一个view提交到CocoaPods时候,突然发现pull request被拒了,原来从去年开始就改用trunk了... 网上那些folk 在提交的pull request的教程都不可用 ...

  9. CSS 条纹背景深入

    一.水平渐变 实现水平条纹很简单 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  10. 三行命令搞定查询Python安装目录

    想为Python添加一个库文件到默认目录,却忘记了Python安装目录. 其实,只要用下面三行命令,就可以轻松得到Python安装路径了. 进入Python >>>import sy ...