[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
--//一些细节留给大家揣摩吧...
--//昨天遇到的问题,执行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
--//一些细节留给大家揣摩吧...
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 如何基于DeepSeek开展AI项目
2020-11-13 [20201112]tmpwatch 删除文件.txt
2019-11-13 [20191113]oracle共享连接模式端口2.txt
2017-11-13 [20171110]sql语句相同sql_id可以不同吗.txt
2017-11-13 [20171113]修改表结构删除列相关问题3.txt
2017-11-13 [20171113]修改表结构删除列相关问题2.txt
2017-11-13 [20171113]修改表结构删除列相关问题.txt