0

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

4

2 回答 2

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. 据推测,您没有对数据进行任何数学运算,因此拥有 a 的大部分好处NUMBER都不在表中。软件版本本身并不是数字的。您经常发现自己需要两个以上的组件(即 Oracle 11.2.0.1)。软件版本往往会对它们进行高度非数字化的处理。如果 4.9 之后的版本是 4.10,那与 4.0 之后的 4.1 版本有很大不同。但是,如果您使用的NUMBER是 ,您将失去区分这些版本的能力。

于 2013-05-08T19:24:22.307 回答
0

如果您需要从代码中隐藏它,请创建一个视图来隐藏这些详细信息。

但是,出于 Justin 指出的相同原因,它将是一个字符串。

于 2013-05-08T19:45:28.230 回答