将1.10显示为NUMBER而不是字符

时间:2016-01-26 23:53:09

标签: sql oracle numbers

我尝试以下查询

SELECT TO_NUMBER(1.10)
FROM DUAL;

结果是1.1。有可能我可以使用TO_NUMBER函数而不是使用TO_CHAR函数将其显示为1.10。这是因为存储它的所有变量和游标都声明为NUMBER数据类型,我不想更改声明(因为它会影响很多包)

提前致谢!

1 个答案:

答案 0 :(得分:0)

TO_NUMBER()将文本转换为数字。数字通常不用于显示,而是用于计算和保存的数据。

TO_CHAR()将数据转换为文本(重载函数),您可以在其中控制文本的外观。

因此,TO_NUMBER(1.10)并没有真正做任何事情,因为您要将数字转换为数字。

因此,当显示数字(不是文本)时,oracle会使用默认显示值隐式转换为文本。所以你应该总是使用to_char来控制数字的显示。

看一下这个例子:

declare
   l_number   number := 1.10;
   l_text     varchar2 (10) := '200.20';
begin
   dbms_output.put_line (l_number);
   dbms_output.put_line (to_char (l_number, '9D00'));
   dbms_output.put_line (l_text);
   dbms_output.put_line (to_number (l_text));
end;

输出:

1.1
 1.10
200.20
200.2

您看到to_char为格式添加了空格填充。因此,如果您不想要,请使用 trim()