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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章