[MySQL]如何将大数值带上 元,万,亿 这样的单位?
要解决的问题: 某表某字段用来表示交易金额,不同记录的金额相差很大,有的只有几元几角几分,有的却上亿.如果直接就把数值在页面上展示出来,则可读性不佳.因此我们需要将其单位展示出来,如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]如何将大数值带上 元,万,亿 这样的单位?的更多相关文章
- js转换金钱为中文单位元、万元、亿元、万亿
function unitConvert(num) { var moneyUnits = ["元", "万元", "亿元", "万 ...
- Asp.Net上传大文件带进度条swfupload
Asp.Net基于swfupload上传大文件带进度条百分比显示,漂亮大气上档次,大文件无压力,先看效果 一.上传效果图 1.上传前界面:图片不喜欢可以自己换 2.上传中界面:百分比显示 3.上传后返 ...
- mysql查询结果带上序号
select (@i:=@i+1) as rownum,t1.id ","from mega_user t1,(select @i:=0) t2 order by t1.gold ...
- Mysql千万级大表优化
Mysql的单张表的最大数据存储量尚没有定论,一般情况下mysql单表记录超过千万以后性能会变得很差.因此,总结一些相关的Mysql千万级大表的优化策略. 1.优化sql以及索引 1.1优化sql 1 ...
- MySQL优化十大技巧
转自:https://m.2cto.com/database/201701/557910.html MYSQL优化主要分为以下四大方面: 设计:存储引擎,字段类型,范式与逆范式 功能:索引,缓存,分区 ...
- 【优化】MySQL千万级大表优化解决方案
问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ...
- 30分钟玩转Net MVC 基于WebUploader的大文件分片上传、断网续传、秒传(文末附带demo下载)
现在的项目开发基本上都用到了上传文件功能,或图片,或文档,或视频.我们常用的常规上传已经能够满足当前要求了, 然而有时会出现如下问题: 文件过大(比如1G以上),超出服务端的请求大小限制: 请求时间过 ...
- 【转】JS大总结(带实例)
JS大总结(带实例) JavaScript事务查询综合click() 对象.click() 使对象被点击.closed 对象.closed 对象窗口是否已封闭true/falseclearTimeou ...
- vue大文件分片上传插件
最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...
随机推荐
- 操作属性、操作样式 - DOM编程
1. 操作属性 1.1 HTML 属性与 DOM 属性的对应 <div> <label for="username">User Name: </lab ...
- javascript作用域、预解析笔记
1.作用域 一般情况下,一段代码中所用到的名字并不总是有效可用的, 而限定这个名字(变量)的可用性的代码范围就是这个名字的作用域,可用有效的减少变量名冲突 2.js的作用域(e ...
- JS学习第二天
数组: var arr1=[2,5,6]; 定义时直接给数组元素赋值 var arr2=[]; 定义一个空数组 var arr3=new Array(); 定义一个空数组并通过索引来 ...
- C#设计模式之12-代理模式
代理模式(Proxy Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/411 访问. 代理模式属于结构型 ...
- STM32 重启之后程序丢失
1 BOOT1 BOOT0都已经接10K接地,晶振波形正常 2 在主程序最开始运行的地方加入5秒的延时,程序不会丢失.原因可能为单片机其它外设没有准备好 int main(void) { delay_ ...
- 【算法•日更•第三十五期】FF算法优化:EK算法
▎写在前面 FF算法传送门 之前我们已经学过了FF算法(全称Ford-Fulkerson算法)来找最大流,但是这种算法仍有诸多不对的地方. 其实这种算法存在着严重的效率的问题,请看下面的图: 以这个图 ...
- python re之search/match差别
search → find something anywhere in the string and return a match object. match → find something at ...
- Jmeter系列(51)- 详解 Transaction Controller 事务控制器
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 简单介绍 可以添加多个取样器(samp ...
- Jmeter 常用函数(6)- 详解 __P
如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 和 __property 作用一样,不 ...
- 第2章 RDD编程(2.3)
第2章 RDD编程(2.3) 2.3 TransFormation 基本RDD Pair类型RDD (伪集合操作 交.并.补.笛卡尔积都支持) 2.3.1 map(func) 返回一个新的RDD,该 ...