[20240511]建立10进制转任意进制10tox.sql脚本.txt --//翻开以前笔记,找到1个脚本10x.sql(改名10tox.sql),可以实现10进制转任意进制.受字符集限制最大64进制. --//bash shell 64进制编码从0开始. 0-9 , a-z , A-Z.这样仅仅62个编码.还剩下2个.@_,以该编码为基础来实现 --//bash shell 64进制完整的编码如下: $ base64=$(echo {0..9} {a..z} {A..Z} @ _) $ echo $base64 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z @ _ --//定义成bash数组如下: $ BASE64=($(echo {0..9} {a..z} {A..Z} @ _)) $ echo ${BASE64[*]} 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z @ _ --//0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@_ --//实际上最大64进制.原始代码来自Franck Pachot ,我修改一下支持最大64进制,并且作为全部字符串输出,原始链接已经找不到了. $ cat 10tox.sql 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)) ; --//如果参数2不输入,缺省转换为16进制. --//如果参数2=32,采用sql_id的编码,实际上就是'0123456789abcdefghijklmnopqrstuvwxyz'字符串里面取消eilo字符. 输出sql_id值. --//简单验证: --//63*64*64+62*64+1 = 262017 $ echo $((64#_@1)) 262017 SCOTT@test01p> @ 10tox 262017 64 BASE10 BASE64 ------------------------------ ------------------------------ 262017 _@1 --//15*16*16+11*16+1 = 4017 $ echo $((16#fb1)) 4017 SCOTT@test01p> @ 10tox 4017 16 BASE10 BASE16 ------------------------------ ------------------------------ 4017 fb1 SCOTT@test01p> @ undefparm SCOTT@test01p> define 2 SP2-0135: symbol 2 is UNDEFINED SCOTT@test01p> @ 10tox 4017 BASE10 BASE16 ------------------------------ ------------------------------ 4017 fb1 --//如果没有输入参数2默认16进制. SCOTT@test01p> @ 10tox 4017 '' BASE10 BASE16 ------------------------------ ------------------------------ 4017 fb1 --// 36*62*62+9*62+2 = 138944 $ echo $((62#A92)) 138944 SCOTT@test01p> @ 10tox 138944 62 BASE10 BASE62 ------------------------------ ------------------------------ 138944 A92 --//看看sql_id的计算. SCOTT@test01p> select * from dept; DEPTNO DNAME LOC ---------- -------------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SCOTT@test01p> @ hash HASH_VALUE SQL_ID CHILD_NUMBER KGL_BUCKET PLAN_HASH_VALUE HASH_HEX SQL_EXEC_START SQL_EXEC_ID ---------- ------------- ------------ ---------- --------------- ---------- ------------------- ----------- 3599690174 3154rqzb8xudy 0 59838 3383998547 d68ee9be 2024-05-15 21:33:53 16777217 SCOTT@test01p> select * from v$db_object_cache where name='select * from dept' and rownum=1 2 @ prxx ============================== OWNER : NAME : select * from dept DB_LINK : NAMESPACE : SQL AREA TYPE : CURSOR SHARABLE_MEM : 16176 LOADS : 1 EXECUTIONS : 1 LOCKS : 0 PINS : 0 KEPT : NO CHILD_LATCH : 0 INVALIDATIONS : 0 HASH_VALUE : 3599690174 LOCK_MODE : NONE PIN_MODE : NONE STATUS : VALID TIMESTAMP : 2024-05-15/21:31:36 PREVIOUS_TIMESTAMP : LOCKED_TOTAL : 1 PINNED_TOTAL : 2 PROPERTY : FULL_HASH_VALUE : 124fbd0eb1f2b39a309497b7d68ee9be CON_ID : 3 CON_NAME : ADDR : 000007FF15B216D0 EDITION : PL/SQL procedure successfully completed. --//取FULL_HASH_VALUE后16个字符. SYS@test> @ hex 309497b7d68ee9be DEC HEX ----------------------------------- -------------------- 3500589626208217534.000000 309497B7D68EE9BE SYS@test> @ 10tox 3500589626208217534 32 BASE10 BASE32 --------------------- ------------------------------ 3500589626208217534 3154rqzb8xudy --//sql_id=3154rqzb8xudy.
[20240511]建立10进制转任意进制10tox.sql脚本.txt
来源:这里教程网
时间:2026-03-03 20:01:57
作者:
编辑推荐:
- [20240511]建立10进制转任意进制10tox.sql脚本.txt03-03
- 数据库管理-第187期 23ai:怎么用SQL创建图(20240510)03-03
- [20250511]建立完善s2h.sql脚本.txt03-03
- [20240512]建立完善sql_idz.sh脚本.txt03-03
- [20240512]没有建表引发的灾难.txt03-03
- [20240513]ORA-38029 object statistics are locked.txt03-03
- [20240515]建立完善t2sh.sql脚本.txt03-03
- [20240514]建立完善vim bccalc_win.vim插件.txt03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 数据库管理-第187期 23ai:怎么用SQL创建图(20240510)
数据库管理-第187期 23ai:怎么用SQL创建图(20240510)
26-03-03 - 数据库管理-第186期 23ai:啥?我还能干掉Neo4j?(20240509)
- rac asm新增磁盘报0RA-15333或ORA-15075
rac asm新增磁盘报0RA-15333或ORA-15075
26-03-03 - Oracle RAC的排障案例一则
Oracle RAC的排障案例一则
26-03-03 - 测试开发新技能:Oracle到高斯数据库的无缝迁移
测试开发新技能:Oracle到高斯数据库的无缝迁移
26-03-03 - 因Oracle 23ai,甲骨文中国罕见的开了个会
因Oracle 23ai,甲骨文中国罕见的开了个会
26-03-03 - 数据库管理-第190期 备份堪比生死(20240515)
数据库管理-第190期 备份堪比生死(20240515)
26-03-03 - 数据库管理-第180期 23ai: Cloud/Container Plus AI(20240503)
- Oracle 23ai新特性—DBMS_DICTIONARY_CHECK
Oracle 23ai新特性—DBMS_DICTIONARY_CHECK
26-03-03 - oracle怎么处理json格式
oracle怎么处理json格式
26-03-03
