mysql 实现excel 小数点后面自动请零

场景:单价的处理

 

如:单价需要精确到小数位7位,未来计算精确,mysql中定义的类型为decimal,

结果在界面回显的时候,输入的值:0.001 保存数据库中是0.0010000 希望结果为0.001 ,

如输入的值是:20.00 保存数据库中是20.0000000 希望回显结果是20.00

 

由于输入的值随机性强,特别是如果输入0, 回显时候变成oe-7 超级郁闷。。。

 

反思苦想,只能在mysql中处理,比较好!

 

解决方法:

 

1:先把数据转换成字符串:如:SELECT CONCAT(2,'');

其实在windows 中 此步骤可省略。

 

2:去除位数为0的字符

     如:

select TRIM(TRAILING '0' FROM '20.00')

 

3: 由于输入20.00 在进行第2步的时候 变成了"20. "  必须加上00 得出结果20.00

 

如:

1、

 select case when   (select SUBSTRING_INDEX((select TRIM(TRAILING '0' FROM '20.00100')), '.', -1))=""
 then (select CONCAT( (select TRIM(TRAILING '0' FROM '20.00100')),"00")   ) 
else  ( select TRIM(TRAILING '0' FROM '20.00100') )
end 

 

2.、

 

select case when   (select SUBSTRING_INDEX((select TRIM(TRAILING '0' FROM '20.00')), '.', -1))=""
 then (select CONCAT( (select TRIM(TRAILING '0' FROM '20.00')),"00")   ) 
else  ( select TRIM(TRAILING '0' FROM '20.00') )
end 

 

大家可以比对下2个SQL输入的结果了

 

其中用到的语句:

-- 替换尾数为0
select TRIM (TRAILING '0' FROM '20.00')

 

-- 获取 .  后面的字符

select SUBSTRING_INDEX((select TRIM(TRAILING '0' FROM '20.00100')), '.', -1)

-- 简单点

select SUBSTRING_INDEX('iteye.com', '.', -1)

  另外判断为""  就用case when 了,这个就不举例了,在前面语法中已经提到。

 

你可能感兴趣的:(DB)