[20241112]无法理解sqlplus的输出.txt

[20241112]无法理解sqlplus的输出.txt

–//昨天遇到的问题,执行10tox.sql脚本出现一些状况。分析认为oracle 把8d当作数字。

–//但是还是遇到我无法理解的情况:

1.环境:

SCOTT@book> @ver1

PORT_STRING                    VERSION        BANNER

—————————— ————– ——————————————————————————–

x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64bit Production

2.测试:

SCOTT@book> select 1a,2b,3c,4d,5e,6f,7z1 from dual ;

         A          B          C         4D          E         6F         Z1

———- ———- ———- ———- ———- ———- ———-

         1          2          3   4.0E+000          5   6.0E+000          7

–//实际上就是将1a 变成 1 A,A作为了字段名。

–//但是4d,6f出现科学计数法的输出格式,为什么?

SCOTT@book> @ hash

HASH_VALUE SQL_ID        CHILD_NUMBER KGL_BUCKET PLAN_HASH_VALUE HASH_HEX   SQL_EXEC_START      SQL_EXEC_ID

———- ————- ———— ———- ————— ———- ——————- ———–

2105708413 b34gktxys53vx            0      36733      1388734953  7d828f7d  2024-11-12 17:27:40    16777216

SCOTT@book> @ expand_sql_text b34gktxys53vx

SELECT 1 “A”,2 “B”,3 “C”,4d “4D”,5 “E”,6f “6F”,7 “Z1” FROM “SYS”.”DUAL” “A1”

PL/SQL procedure successfully completed.

–//展开后出现4d “4d”,6f “6f”的情况,不理解。似乎有时候d f代替e的功能。

–//再贴一些例子:

SCOTT@book> select 8d+3e+5f from dual ;

8D+3E+5F

———-

  3.0E+005

SCOTT@book> set numw 20

SCOTT@book> select 8d+3e+5f from dual ;

            8D+3E+5F

——————–

        3.00008E+005

–//相当于解析位  8 + 3e5  。

SCOTT@book> select 8e+3d+5f from dual ;

            8E+3D+5F

——————–

          8.005E+003

–//8e3 + 5。

SCOTT@book> select 1a + 2b from dual ;

select 1a + 2b from dual

          *

ERROR at line 1:

ORA-00923: FROM keyword not found where expected

–//这样写不能参与计算的。

SCOTT@book> select 16O from dual ;

                   O

——————–

                  16

SCOTT@book> select  8+16o  from dual ;

                   O

——————–

                  24

SCOTT@book> select  16o+8  from dual ;

select  16o+8  from dual

           *

ERROR at line 1:

ORA-00923: FROM keyword not found where expected

SCOTT@book> select  16d+8  from dual ;

               16D+8

——————–

            2.4E+001

–//那位给出一些解析,oracle为什么这样设计。

–//晚上想一想,似乎d表示decimal,f表示浮点型,e表示幂数,输出采用科学计数法。

SCOTT@book> select 4d,5d ,5.3d ,5.4de, 5.5fd from dual ;

        4D         5D       5.3D          E          D

———- ———- ———- ———- ———-

  4.0E+000   5.0E+000   5.3E+000   5.4E+000   5.5E+000

–//一些细节留给大家揣摩吧…

© 版权声明
THE END
支持一下吧
点赞15 分享
评论 抢沙发
头像
请文明发言!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容