[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', '1.08'); insert into tb_number(id,value) values('2', '12.08'); insert into tb_number(id,value) values('3', '123.08'); insert into tb_number(id,value) values('4', '1234.08'); insert into tb_number(id,value) values('5', '12345.08'); insert into tb_number(id,value) values('6', '123456.08'); insert into tb_number(id,value) values('7', '1234567.08'); insert into tb_number(id,value) values('8', '12345678.08'); insert into tb_number(id,value) values('9', '123456789.08'); insert into tb_number(id,value) values('10','1234567891.08'); insert into tb_number(id,value) values('11','12345678912.08'); insert into tb_number(id,value) values('12','123456789123.08'); insert into tb_number(id,value) values('13','1234567891234.08'); insert into tb_number(id,value) values('14','12345678912345.08'); insert into tb_number(id,value) values('16','123456789123456.08');
--2020年5月8日--
分类:
Z.MySQL.函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2018-05-08 【转载】扫地为兵
2018-05-08 【python】bytes与字符串的相互转化
2018-05-08 【python】使用py3-bencode打开torrent文件
2018-05-08 【python】安装py3-bencode 及小例程
2018-05-08 【python】安装bcoding
2018-05-08 【python】安装bencode
2018-05-08 纸上得来终觉浅