以下是从双表中选择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
哪里有用?这是什么意思?
答案 0 :(得分:4)
d
和f
隐含地将数字声明为浮点。
1.0E+002
是100 {/ 3>的scientific notation
100a
仅由oracle解释为数字值100
别名a
。
官方文件NUMBER and Floating-Point Literals
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)
只是一个猜测:" f" /" F"后缀表示浮点(因此,带有尾数和指数的科学记数法)。
" d" /" d"也许是小数??? (固定精度十进制)
Google for Oracle数字类型,可能: - (