2017-08-12 44 views
0

如何存储在数据库十进制值仅如果数字是十进制,拥有超过两位小数 像MySQL的精度只有小数

2小数精度

10.00应存储

10.0应存储

应存储

10.1应存储10.1

10.12应存储10.12

10.123应存储10.12

10.1234应存储10.12

这些到目前为止,我已经试过,没有他们的工作

FLOAT(20,2) 
DOUBLE(20,2) 
DECIMAL(20,2) 

所有这些都将简单到10.00

我想设置此列类型不希望在查询中使用。

+0

“10.10”应存储为什么? –

+0

应该是10.1 –

回答

0

你很混淆如何存储它与它的呈现方式。在任何情况下,您都希望将值存储为decimal(20, 2),因为您似乎只关心2位精度。

当你输出它时,你想将它转换为一个字符串。如果逗号在更大数字中可接受,则类似:

select (case when col = floor(col) then format(col, 0) 
      when col*10 = floor(col * 10) then format(col, 1) 
      else format(col, 2) 
     end) as col_as_string 
+0

我想设置这个列类型不想在查询中使用。 –

+0

没有DATATYPE可以满足您的要求。 –