【问题标题】:What is the meaning of <number>d or <number>f in oracle?oracle中的<number>d或<number>f是什么意思?
【发布时间】:2016-09-24 17:30:57
【问题描述】:

这里是从对偶表中选择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

它在哪里有用?什么意思?

【问题讨论】:

  • 它应该是 select 100 a from dual 以便为 100 列设置别名。请注意,表达式和别名之间有一个空格。该空间使100 f(整数100别名为f)和100f(浮点100.0,无别名)之间产生差异。

标签: sql database oracle


【解决方案1】:

df 用于将数字隐式声明为 浮点

1.0E+002 是 100 的 scientific notation

100a 只是被 oracle 解释为数字值100 别名a


官方文档NUMBER and Floating-Point Literals

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

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


可以在ROUND() function 文档中找到此行为的示例

下面的例子说明了四舍五入的区别 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

【讨论】:

    【解决方案2】:

    只是猜测:“f”/“F”后缀表示浮点数(因此,带有尾数和指数的科学记数法)。

    "d"/"D" 可能是十进制的??? (固定精度小数)

    Google for Oracle Numeric Types,也许 :-(

    【讨论】:

      猜你喜欢
      • 2016-06-22
      • 2016-07-14
      • 2017-05-25
      • 2020-04-19
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      相关资源
      最近更新 更多