mysql查询语句,在查询语句中进行 “运算” 并保留n位小数 或 保留整数(无符号类型) 输出

【问】为什么要保留n位小数 或 保留整数 输出?

【答】通常在存储数据时,会将原本是小数的数据经过  乘以 10*n 倍后,转为整数存入数据库,

所以我在sql查询操作过程中,进行了 “除法” 运算 ,输出额结果是 decimal 类型,

于是在序列化时会报错(用python转换json格式的时候会报错),经过查询,只需转化一下类型即可;

 

【例】select  number/100 as num1 from  tabale ;  这个查询结果 会报错:

 

【解决方案】

1、调用mysql自带的格式化小数函数format(x,d)

  1. select format(23456.789,2);  
  2. select formate(salary,2);  

输出:

  1. 23,456.79  

,format()函数会对小数部分进行四舍五入操作,整数部分从右向左每3位一个逗号进行格式化输出,如下图:

2、调用mysql自带的函数truncate(x,d)

例如:

  1. select truncate(23456.789,2);  
  2. select truncate(salary,2);  

输出:

  1. 23456.78  

truncate()函数会将小数部分2位以后的值直接舍去,如下图:

 

3、调用mysql自带的函数convert(expr,type);

例如:

  1. select convert(23456.789,decimal(10,2));  
  2. select convert(salary,decimal(10,2));  

输出:

  1. 23456.79  

convert()函数会对小数部分进行四舍五入操作,解释一下decimal(10,2),它表示最终得到的结果整数部分位数加上小数部分位数小于等于10,小数部分位数2,如下图:

 

4、使用 CAST在查询的时候处理成无符号型

查询出来countNum是Decimal 
SELECT gid, SUM(number) countNum FROM `gift_tb` WHERE tid="1" GROUP BY gid
转换成无符号型
SELECT gid, CAST(SUM(number) AS SIGNED ) AS countNum FROM `gift_tb` WHERE tid="1" GROUP BY gid

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值