【问题标题】:Why Oracle SQL SELECT expression doesn't print decimal value?为什么 Oracle SQL SELECT 表达式不打印十进制值?
【发布时间】:2013-01-10 23:05:16
【问题描述】:
select (4*(22/7)*3958.759*3958.759) as "Earth's Area" from dual;

Prints:
Earth's Area
------------
   197016573

它应该打印 197016572.595304。为什么点后面的数字在输出中被忽略了?

【问题讨论】:

  • 您的查询应该是work fine and prints 197016572.595304,似乎是其他原因导致了这个问题
  • 在演示中工作,但不在您的环境中?
  • 是的,它可以在 SQL Fiddle 上使用。为什么不在我的 SQL Plus 提示符上?奇怪的!背后的原因可能是什么?
  • 试试select (4.0*(22.0/7.0)*3958.759*3958.759) as "Earth's Area" from dual;
  • 还是一样的输出。 '.' 后没有数字

标签: sql oracle oracle11g sqlplus


【解决方案1】:
to_char((4*(22/7)*3958.759*3958.759)), 'FM99999990D00999999999')

FM 删除前导空格。 9 代表该位置的可选数字。 D 代表小数分隔符。 0 代表该位置的强制性数字。

【讨论】:

  • 我不想使用任何功能。
  • 试试选择CAST((4*(22/7)*3958.759*3958.759) AS DOUBLE) as "Earth's Area" from dual;
【解决方案2】:

这是 SQL*Plus,与从数据库返回的内容无关。您可以使用 SQL*Plus 列格式化命令来获取您想要的格式,如下所示:-

SQL> select (4*(22/7)*3958.759*3958.759) as "Earth's Area" from dual;

Earth's Area
------------
   197016573

SQL> col "Earth's Area" for 99,999,999,999.9999999
SQL> /

           Earth's Area
-----------------------
    197,016,572.5953040

有关格式化选项的更多详细信息的 Oracle 文档是 here

【讨论】:

    【解决方案3】:

    我假设您使用的是 SQL*PLUS。您看不到其余数字的原因是numwidth 参数的值。默认是 10,所以你需要稍微调整一下,比如设置为 30。这是一个例子:

    SQL> select (4*(22/7)*3958.759*3958.759) as "Earth's Area" from dual;
    
    Earth's Area                                                                    
    ------------                                                                    
       197016573                                                                    
    
    SQL> set numwidth 31
    
    SQL> select (4*(22/7)*3958.759*3958.759) as "Earth's Area" from dual;
    
     Earth's Area                                                 
    ----------------                                                 
     197016572.595304  
    

    您还可以通过set numformatcolumn format 覆盖numwidth 参数的值

    【讨论】:

      猜你喜欢
      • 2018-06-09
      • 1970-01-01
      • 2016-11-27
      • 2011-04-03
      • 2011-11-21
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多