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

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

形成的SQL语句是:

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

执行效果:

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

以上sql用到的表和数据:

  1. create table tb_number(
  2. id int primary key,
  3. value double )
  4.  
  5. insert into tb_number(id,value) values('', '1.08');
  6. insert into tb_number(id,value) values('', '12.08');
  7. insert into tb_number(id,value) values('', '123.08');
  8. insert into tb_number(id,value) values('', '1234.08');
  9. insert into tb_number(id,value) values('', '12345.08');
  10. insert into tb_number(id,value) values('', '123456.08');
  11. insert into tb_number(id,value) values('', '1234567.08');
  12. insert into tb_number(id,value) values('', '12345678.08');
  13. insert into tb_number(id,value) values('', '123456789.08');
  14. insert into tb_number(id,value) values('','1234567891.08');
  15. insert into tb_number(id,value) values('','12345678912.08');
  16. insert into tb_number(id,value) values('','123456789123.08');
  17. insert into tb_number(id,value) values('','1234567891234.08');
  18. insert into tb_number(id,value) values('','12345678912345.08');
  19. 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. UIAutomator环境Android8.0 环境异常解决

    个人PC环境 ANDROID_HOME:F:\1Study\Andriod\51zxw_2018-0102\Sdk ANT_HOME:D:\ant\apache-ant-1.10.5\ CLASSPA ...

  2. 导航菜单(动画)--- jQuery

    本文章实现是一个导航菜单的功能 (1)点击当前菜单显示二级菜单,再次点击收起当前菜单. (2)当有一个二级菜单显示,点击其他菜单,上一个已点击菜单会收起.只展示当前点击的菜单,只显示一个菜单,类似手风 ...

  3. docker找回构建时被删除的文件

    设想这样一个场景:当一个docker镜像被多次引用构建,在某次构建中某个文件被删除,如何找回被删除的文件? 要想回答这么一个问题,首先得熟悉下docker镜像的分层存储结构,镜像每一层都是只读的: 那 ...

  4. java方法中参数传递与随机点名器、库存管理案例

    一 参数传递 1.定义: 参数传递,可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数, 这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了.这种传递方式,我 们称 ...

  5. 从零开始,Windows操作系统下的超详细的阿里云发布项目过程

    ==================== 步骤0: 购买阿里云服务器 ==================== 0.1 从来没有搞过外网部署的我,当然是先买服务器了,感谢很多小伙伴的帮忙 0.2 登录 ...

  6. 聊聊mysql中的int(1)

    昨天有个读者问了我这样一个问题在mysql中建表的时候,我设置一个字段为int类型,长度为1,但是我发现这个字段却可以存储任意长度的数字,这是什么情况?这个问题在我刚接触数据库的时候也遇到过,我觉得有 ...

  7. Oracle数据库启动及状态等查询

    一.监听 1)启动监听: lsnrctl start 2)查看监听状态: lsnrctl status 3)停止监听: lsnrctl stop 4)检查是否可进行网络连接: tnsping ${si ...

  8. 【POJ3071】Football - 状态压缩+期望 DP

    Description Consider a single-elimination football tournament involving 2n teams, denoted 1, 2, …, 2 ...

  9. js截取URL网址参数

    将本页代码复制粘贴到html页面,打开即可. <!DOCTYPE html> <html lang="en"> <head> <meta ...

  10. 土地购买 (斜率优化dp)

    土地购买 (斜率优化dp) 题目描述 农夫 \(John\) 准备扩大他的农场,他正在考虑$ N(1 \leqslant N \leqslant 50,000)$ 块长方形的土地. 每块土地的长宽满足 ...