[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日--

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM