博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从MySQL表中计算财务数据保留小数位以及保留或省略小数位00的SQL写法
阅读量:4166 次
发布时间:2019-05-26

本文共 926 字,大约阅读时间需要 3 分钟。

从MySQL表中查询财务数据时经常需要计算金钱字段,对于不同的数据会遇到不同的处理要求,这边遇到的情况包括:

  1. 遇到NULL值返回0
  2. 计算结果永远保留两位小数(包括.00)
  3. 如果可以整除的话计算结果省略小数位(不包括.00)

以下写法作为参考。

SELECT   /* if record is NULL return 0 ; else return decimal of record / 100 with suffix precision remaining (eg: record 100 return 1.00 and record 1024 return 10.24) */  IF(    IFNULL(t.`column`, 0) = 0,     0,     CONCAT(      LEFT(        t.`column`,         CHAR_LENGTH(t.`column`) -2      ),       '.',       RIGHT(t.`column`, 2)    )  ) AS `new_column_0`,   /* return value of record / 100: if decimal part is .00 without suffix precision remaining else with suffix precision remaining (eg: record 100 return 1 and record 1024 return 10.24) */  IF(    t.`column` REGEXP '[[:digit:]]+00$',     CAST(t.`column` / 100 AS UNSIGNED),     CONCAT(      LEFT(        t.`column`,         CHAR_LENGTH(t.`column`) -2      ),       '.',       RIGHT(t.`column`, 2)    )  ) AS `new_column_1` FROM   `table` AS t;

 

转载地址:http://vahxi.baihongyu.com/

你可能感兴趣的文章
c语言中计算数组长度的方法
查看>>
java 数组定义
查看>>
java中的&和&&的区别
查看>>
Java的位运算符
查看>>
BufferedReader与Scanner的区别
查看>>
java String于常量池中的介绍
查看>>
java Text 错误: 找不到或无法加载主类 Text
查看>>
XShell连接ubantu:给ubantu安装ssh
查看>>
c语言的null和0
查看>>
二进制详解:世界上有10种人,一种懂二进制,一种不懂。
查看>>
c语言一个字符变量存储多个字符
查看>>
java接口中方法的默认访问修饰符为public
查看>>
java多线程之并发synchronized
查看>>
java多线程之并发Lock
查看>>
微信公众平台基础配置
查看>>
jpa 和 hibernate 的联系
查看>>
SpringBoot之@SpringBootApplication注解
查看>>
ajax 传JSON 写法
查看>>
SpringBoot之web发展史
查看>>
SpringBoot之开发web页面
查看>>