oracle中<number> d或<number> f的含义是什么?

时间:2016-09-24 04:58:35

标签: sql database oracle

以下是从双表中选择100的正常执行:

SQL> select 100 from dual;

       100
----------
       100

以下是将'a'添加到仅设置列名称的数字100的相同执行。除了d和f之外,任何其他字母表的结果都是相同的。

SQL> select 100a from dual;

         A
----------
       100

以下是将'd''f'添加到号码100

的相同执行
SQL> select 100d from dual;

      100D
----------
  1.0E+002

SQL> select 100f from dual;

      100F
----------
  1.0E+002

哪里有用?这是什么意思?

2 个答案:

答案 0 :(得分:4)

df隐含地将数字声明为浮点

1.0E+002是100 {/ 3>的scientific notation

100a仅由oracle解释为数字值100别名a

官方文件NUMBER and Floating-Point Literals

enter image description here

  

f F 表示该数字是32位二进制浮点数   数字(类型为BINARY_FLOAT)。

     

d D 表示该数字是64位二进制浮点数   数字(类型为BINARY_DOUBLE)

可以在ROUND() function doc

中找到此行为的示例
  

以下示例说明了舍入之间的区别   NUMBER和浮点数值。 NUMBER个值被四舍五入   (对于正值),而浮点数是四舍五入的   最接近的偶数值:

SELECT ROUND(1.5), ROUND(2.5) FROM DUAL;

ROUND(1.5) ROUND(2.5)
---------- ----------
         2          3

SELECT ROUND(1.5f), ROUND(2.5f) FROM DUAL;

ROUND(1.5F) ROUND(2.5F)
----------- -----------
   2.0E+000    2.0E+000

答案 1 :(得分:-2)

只是一个猜测:&#34; f&#34; /&#34; F&#34;后缀表示浮点(因此,带有尾数和指数的科学记数法)。

&#34; d&#34; /&#34; d&#34;也许是小数??? (固定精度十进制)

Google for Oracle数字类型,可能: - (