要解决的问题: 某表某字段用来表示交易金额,不同记录的金额相差很大,有的只有几元几角几分,有的却上亿.如果直接就把数值在页面上展示出来,则可读性不佳.因此我们需要将其单位展示出来,如1.23元,3.45万,4.56亿等.

解决方法:用case when判断数值所在区间,用convert函数将计算后的数值留下两位小数,用concat函数将计算后的数值和单位连接在一起.

形成的SQL语句是:

select id,value,(case when value<10000  then concat(convert(value,decimal(12,2)),'元')
when value<100000000 then concat(convert(value/10000,decimal(12,2)),'万')
else concat(convert(value/100000000,decimal(12,2)),'亿') end) as newCol from tb_number ;

执行效果:

mysql> select id,value,(case when value<10000  then concat(convert(value,decimal(12,2)),'元')
-> when value<100000000 then concat(convert(value/10000,decimal(12,2)),'万')
-> else concat(convert(value/100000000,decimal(12,2)),'亿') end) as newCol from tb_number ;
+----+------------------+--------------+
| id | value | newCol |
+----+------------------+--------------+
| 1 | 1.08 | 1.08元 |
| 2 | 12.08 | 12.08元 |
| 3 | 123.08 | 123.08元 |
| 4 | 1234.08 | 1234.08元 |
| 5 | 12345.08 | 1.23万 |
| 6 | 123456.08 | 12.35万 |
| 7 | 1234567.08 | 123.46万 |
| 8 | 12345678.08 | 1234.57万 |
| 9 | 123456789.08 | 1.23亿 |
| 10 | 1234567891.08 | 12.35亿 |
| 11 | 12345678912.08 | 123.46亿 |
| 12 | 123456789123.08 | 1234.57亿 |
| 13 | 1234567891234.08 | 12345.68亿 |
| 14 | 12345678912345.1 | 123456.79亿 |
| 16 | 123456789123456 | 1234567.89亿 |
+----+------------------+--------------+
15 rows in set (0.00 sec)

以上sql用到的表和数据:

create table tb_number(
id int primary key,
value double ) insert into tb_number(id,value) values('', '1.08');
insert into tb_number(id,value) values('', '12.08');
insert into tb_number(id,value) values('', '123.08');
insert into tb_number(id,value) values('', '1234.08');
insert into tb_number(id,value) values('', '12345.08');
insert into tb_number(id,value) values('', '123456.08');
insert into tb_number(id,value) values('', '1234567.08');
insert into tb_number(id,value) values('', '12345678.08');
insert into tb_number(id,value) values('', '123456789.08');
insert into tb_number(id,value) values('','1234567891.08');
insert into tb_number(id,value) values('','12345678912.08');
insert into tb_number(id,value) values('','123456789123.08');
insert into tb_number(id,value) values('','1234567891234.08');
insert into tb_number(id,value) values('','12345678912345.08');
insert into tb_number(id,value) values('','123456789123456.08');

--2020年5月8日--

[MySQL]如何将大数值带上 元,万,亿 这样的单位?的更多相关文章

  1. js转换金钱为中文单位元、万元、亿元、万亿

    function unitConvert(num) { var moneyUnits = ["元", "万元", "亿元", "万 ...

  2. Asp.Net上传大文件带进度条swfupload

    Asp.Net基于swfupload上传大文件带进度条百分比显示,漂亮大气上档次,大文件无压力,先看效果 一.上传效果图 1.上传前界面:图片不喜欢可以自己换 2.上传中界面:百分比显示 3.上传后返 ...

  3. mysql查询结果带上序号

    select (@i:=@i+1) as rownum,t1.id ","from mega_user t1,(select @i:=0) t2 order by t1.gold ...

  4. Mysql千万级大表优化

    Mysql的单张表的最大数据存储量尚没有定论,一般情况下mysql单表记录超过千万以后性能会变得很差.因此,总结一些相关的Mysql千万级大表的优化策略. 1.优化sql以及索引 1.1优化sql 1 ...

  5. MySQL优化十大技巧

    转自:https://m.2cto.com/database/201701/557910.html MYSQL优化主要分为以下四大方面: 设计:存储引擎,字段类型,范式与逆范式 功能:索引,缓存,分区 ...

  6. 【优化】MySQL千万级大表优化解决方案

    问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ...

  7. 30分钟玩转Net MVC 基于WebUploader的大文件分片上传、断网续传、秒传(文末附带demo下载)

    现在的项目开发基本上都用到了上传文件功能,或图片,或文档,或视频.我们常用的常规上传已经能够满足当前要求了, 然而有时会出现如下问题: 文件过大(比如1G以上),超出服务端的请求大小限制: 请求时间过 ...

  8. 【转】JS大总结(带实例)

    JS大总结(带实例) JavaScript事务查询综合click() 对象.click() 使对象被点击.closed 对象.closed 对象窗口是否已封闭true/falseclearTimeou ...

  9. vue大文件分片上传插件

    最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...

随机推荐

  1. JSP中contentType、pageEncoding和meta charset的区别

    1.创建JSP 使用Eclipse创建JSP文件: <%@ page language="java" contentType="text/html; charset ...

  2. SwaggerUI看烦了,IGeekFan.AspNetCore.Knife4jUI 帮你换个新皮肤

    背景 好像是上周四,看到微信群有人说java有轮子swagger-bootstrap-ui,而c#,就是找不到. 于是我一看,就说大话:"这个只是一套UI,他这个有开源地址么" 被 ...

  3. java 增强for循环与泛型

    一 增强for循环 增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的.它的内部 原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作 ...

  4. Homekit_温湿度_人体红外_光强_传感器

    市面上大多数,传感器产品多是简单的单个传感器进行售卖,这里我推荐一款四合一的产品,使用Homekit进行控制. 前置需求: 苹果手机一台 四合一传感器一个 USB数据线一根 介绍: 1.外观上是一个小 ...

  5. 手动向Maven本地仓库添加ORACLE ojdbc6jar包

    第一步: 把你的oracle中的ojdbc6.jar复制放到D盘首目录 这是我的D:\oracle\product\11.2.0\dbhome_1\jdbc\ D:ojdbc6.jar 但是Maven ...

  6. Java引用类型之软引用(2)

    下面接着上一篇介绍第2阶段和第3阶段的处理逻辑. 2.process_phase2() 第2个阶段移除所有的referent还存活的Reference,也就是从refs_list中移除Referenc ...

  7. 一线大厂工程师推荐:Mysql、Springboot、JVM、Spring等面试合集

    前两天晚上,正当我加班沉浸在敲代码的快乐中时,听到前桌的同事在嘀咕:Spring究竟是如何解决的循环依赖? 这让我想起最开始学Java的时候,掌握了一点基本语法和面向对象的一点皮毛.当时心里也是各种想 ...

  8. 实现直方图均衡化(java+opencv)

    什么是直方图均衡化? 直方图均衡化是一种简单有效的图像增强技术,通过改变图像的直方图来改变图像中各像素的灰度,主要用于增强动态范围偏小的图像的对比度.原始图像由于其灰度分布可能集中在较窄的区间,造成图 ...

  9. 简单解析PAT、PMT的程序

    刚开始学习有关TS.PAT.PMT方面的内容,参考了别人的一些程序,然后写了一个简单的解析TS的小程序.如果有地方错误,请发邮件给我843036544@qq.com. #include<stdi ...

  10. C++ Templates (1.7 总结 Summary)

    返回完整目录 目录 1.7 总结 Summary 1.7 总结 Summary 函数模板定义了一系列不同模板实参的函数 当传递实参给依赖于模板参数的函数参数,函数模板推断模板参数并实例化相应的参数类型 ...