[20241112]使用10tox.sql脚本遇到的问题.txt --//自己在使用xto10.sql脚本时,输入参数错误,我没有想到竟然执行有结果,例子: SYS@book> @ xto10 d5f8b304 10 BASE10 BASE10 ------------------------------ ------------------------------ d5f8b304 136591304 --//按照道理我输入一个16进制数,转换10进制,应该输入如下: SYS@book> @ xto10 d5f8b304 16 BASE16 BASE10 ------------------------------ ------------------------------ d5f8b304 3589845764 --//自然联想到10tox.sql脚本应该存在问题。 --//我仔细看好像该问题在10tox.sql不存在,因为带入的参数1是10进制数,参数2转换的进制数,都要参与运算,任何1个包含非数字参数 --//都会报错。 --//例子如下: SCOTT@book> @ 10tox d 16 connect by level <= ceil(log(16,d+1)) * ERROR at line 17: ORA-00904: "D": invalid identifier SCOTT@book> @ 10tox 13 d connect by level <= ceil(log(d,13+1)) * ERROR at line 17: ORA-00904: "D": invalid identifier --//但是当我执行如下时,我遇到奇怪的问题: SCOTT@book> @ 10tox 8d 16 BASE10 BASE16 ------------------------------ ------------------------------ 8d 8 SCOTT@book> @ 10tox 18d 16 BASE10 BASE16 ------------------------------ ------------------------------ 18d 12 SCOTT@book> select ceil(log(16d,18d+1)) from dual ; CEIL(LOG(16D,18D+1)) -------------------- 2.0E+000 --//脚本10tox.sql的执行没有报错,也就是oracle认为8d是"合法"一个10进制数字,当作数字8. SCOTT@book> select d1 from dual ; select d1 from dual * ERROR at line 1: ORA-00904: "D1": invalid identifier 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 --//oracle也太奇葩了,当作数字显示时,从出现英文字符开始,当作字段名字。 --//好像不全是 d,f 又不是,似乎d表示number,f表示浮点数字,另外写一篇分析看看。 SCOTT@book> select 1z1aaaa from dual ; Z1AAAA ---------- 1 SCOTT@book> select 1z1aaaa from dual ; Z1AAAA ---------- 1 SCOTT@book> @ hash HASH_VALUE SQL_ID CHILD_NUMBER KGL_BUCKET PLAN_HASH_VALUE HASH_HEX SQL_EXEC_START SQL_EXEC_ID ---------- ------------- ------------ ---------- --------------- ---------- ------------------- ----------- 1297973503 9fg27t16pv07z 0 98559 1388734953 4d5d80ff 2024-11-12 09:57:25 16777217 --//z1aaaa被当作显示字段,相当于实际执行的时select 1 z1aaaa from dual ; SCOTT@book> @ expand_sql_text 9fg27t16pv07z SELECT 1 "Z1AAAA" FROM "SYS"."DUAL" "A1" PL/SQL procedure successfully completed. --//这个问题不大好解决,写代码判断有点繁琐,仅仅在以后工作中注意这个细节。 --//附上源代码: $ cat 10tox.sql -- Copyright 2023 lfree. All rights reserved. -- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms and conditions. -------------------------------------------------------------------------------- -- -- File name: 10tox.sql -- Purpose: decimal convert Ximal -- -- Author: lfree -- -- Usage: -- @ 10tox.sql <decimal> Ximal -- convert decimal to hexadecimal -- @ 10tox.sql <decimal> -- @ 10tox.sql <decimal> '' -- @ 10tox.sql <decimal> 16 -- -------------------------------------------------------------------------------- set term off column 2 new_value 2 select null "2" from dual where 1=2; select nvl('&2',16) "2" from dual; set term on column base10 format a30 column base&&2 format a30 select to_char('&&1') base10, listagg( substr( case &&2 when 32 then '0123456789abcdfghjkmnpqrstuvwxyz' else '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@_' end, mod( trunc(&&1/power(&&2,level-1)), &&2 ) + 1 , 1 ) ) within group (order by level desc) base&&2 from dual connect by level <= ceil(log(&&2,&&1+1)) ;
[20241112]使用10tox.sql脚本遇到的问题.txt
来源:这里教程网
时间:2026-03-03 20:50:05
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 长沙岳麓区家具馆:邂逅高颜值餐桌,开启优雅用餐时光
长沙岳麓区家具馆:邂逅高颜值餐桌,开启优雅用餐时光
26-03-03 - 芯片行业ERP系统设计需要考虑哪些因素
芯片行业ERP系统设计需要考虑哪些因素
26-03-03 - 软件签名添加时间戳
软件签名添加时间戳
26-03-03 - OPatch安装补丁将Oracle 19.3升级到19.23
OPatch安装补丁将Oracle 19.3升级到19.23
26-03-03 - Oracle数据库如何模拟ORA-600 [4193]错误?如何解决?
Oracle数据库如何模拟ORA-600 [4193]错误?如何解决?
26-03-03 - shutdown abort关库,真的有可能起不来吗?
shutdown abort关库,真的有可能起不来吗?
26-03-03 - 又是windown服务器断电引起的ora-00333
又是windown服务器断电引起的ora-00333
26-03-03 - 同事不小心drop column了一个列,真的凉凉了吗?
同事不小心drop column了一个列,真的凉凉了吗?
26-03-03 - 数据库数据恢复—Oracle数据库数据恢复案例
数据库数据恢复—Oracle数据库数据恢复案例
26-03-03 - 企业数据管理是否“镜花水月”
企业数据管理是否“镜花水月”
26-03-03
