我有一个存储版本信息的字段,例如1.1,1.2等。但是,它将4.0存储为4,5.0存储为5。
有没有办法强制它显示.0?
我尝试了NUMBER(5,3)和DECIMAL(5,3)数据类型,但都没有工作。
版本 - Oracle Database 11g企业版11.2.0.2.0版 - 64位生产
答案 0 :(得分:7)
如果不需要,NUMBER
列将永远不会存储小数值。
但是,您可以通过使用显式TO_CHAR
来控制数据在将其转换为字符串时的显示方式,而不是依赖于隐式数据类型转换。例如,如果在9.0
调用中使用格式掩码TO_CHAR
,则生成的字符串将始终具有1个十进制数字。
SQL> select to_char( 4, '9.0' )
2 from dual;
TO_C
----
4.0
SQL> ed
Wrote file afiedt.buf
1 select to_char( 4.1, '9.0' )
2* from dual
SQL> /
TO_C
----
4.1
话虽这么说,您似乎不太可能真的希望将软件版本信息存储在NUMBER
列而不是VARCHAR2
中。据推测,您没有对数据进行任何数学运算,因此拥有NUMBER
的大部分好处都不在考虑范围之内。软件版本本质上不是数字版本。您经常发现自己需要两个以上的组件(即Oracle 11.2.0.1)。软件版本往往会对它们进行高度非数字化的操作。如果4.9之后的版本是4.10,那么与4.0之后的版本4.1非常不同。但是,如果您使用NUMBER
,则无法区分这些版本。
答案 1 :(得分:0)
如果您需要在代码中隐藏此内容,请创建一个视图以隐藏这些详细信息。
然而,由于贾斯汀指出的原因,它将成为一个字符串。