强制十进制值,即使在oracle中为0

hac*_*ket 0 oracle decimal oracle11g

我有一个存储版本信息的字段,如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位生产

Jus*_*ave 7

NUMBER列永不存储十进制值,如果它并不需要.

但是,您可以通过使用显式TO_CHAR而不是依赖隐式数据类型转换来控制在将数据转换为字符串时如何向用户显示数据.例如,如果9.0TO_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
Run Code Online (Sandbox Code Playgroud)

话虽这么说,你似乎不太可能真的想要将软件版本信息存储在一NUMBER列而不是一列中VARCHAR2.据推测,你并没有对数据进行任何数学运算,所以大部分的好处NUMBER都不在桌面上.软件版本本质上不是数字版本.您经常发现自己需要两个以上的组件(即Oracle 11.2.0.1).软件版本往往会对它们进行高度非数字化的操作.如果4.9之后的版本是4.10,那么与4.0之后的版本4.1非常不同.NUMBER但是,如果您正在使用a ,则无法区分这些版本.