要解決的問題: 某表某字段用來表示交易金額,不一樣記錄的金額相差很大,有的只有幾元幾角幾分,有的卻上億.若是直接就把數值在頁面上展現出來,則可讀性不佳.所以咱們須要將其單位展現出來,如1.23元,3.45萬,4.56億等.mysql
解決方法:用case when判斷數值所在區間,用convert函數將計算後的數值留下兩位小數,用concat函數將計算後的數值和單位鏈接在一塊兒.sql
造成的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 ;
執行效果:spa
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用到的表和數據:code
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日--blog