[20241110]使用xto10.sql指令碼遇到的問題.txt
--//自己在使用xto10.sql指令碼時,輸入引數錯誤,我沒有想到竟然執行有結果,例子:
SYS@book> @ xto10 d5f8b304 10
BASE10 BASE10
------------------------------ ------------------------------
d5f8b304 136591304
--//按照道理我輸入一個16進位制數,轉換10進位制,應該輸入如下:
SYS@book> @ xto10 d5f8b304 ''
BASE16 BASE10
------------------------------ ------------------------------
d5f8b304 3589845764
SYS@book> @ xto10 d5f8b304 16
BASE16 BASE10
------------------------------ ------------------------------
d5f8b304 3589845764
--//注:如果沒有引數2預設16。
--//我前面執行也 成功,相當於
d5f8b304
d->13 f->15 b->11
13*10^7+ 5*10^6+ 15*10^5+ 8*10^4+ 11*10^3+ 304 = 136591304
--//主要問題是無法保證輸入引數1的是對應進位制X的型別,比如d5f8b304。例子:
SYS@book> @ xto10 z 2
BASE2 BASE10
------------------------------ ------------------------------
z 35
--//無法保證z是2進位制數。導致結果出現35.
--//也就是先要根據引數2判斷引數1是否符合需求,採用繼續執行。
--//而16進位制限制16進位制碼錶,找不到z出現負數。
SYS@book> @ xto10 z 16
BASE16 BASE10
------------------------------ ------------------------------
z -1
--//做一點改進,限制編碼長度,並且如果n=-1,在顯示結果時提示錯誤。
SYS@book> @ xto10 8d 10
BASE10 BASE10 ERRMSG
------------------------------ ------------------------------ ------
8d 79 bad!
--//注:d 在10進製取不到編碼返回-1,這樣計算結果時80-1=79.但是我判斷裡面出現返回-1的情況,ERRMSG顯示錯誤。
SCOTT@book> @ xto10 8d 16
BASE16 BASE10 ERRMSG
------------------------------ ------------------------------ ----
8d 141 good
--//10tox.sql以及xtoy.sql指令碼,也應該存在類似問題,有空也檢檢視看。
--//原始碼修改如下:
$ cat xto10.sql
-- Copyright 2023 lfree. All rights reserved.
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms and conditions.
--------------------------------------------------------------------------------
--
-- File name: xto10.sql
-- Purpose: decimal convert Ximal
--
-- Author: lfree
--
-- Usage:
-- @ xto10 <Ximal_value> Ximal
-- convert hexadecimal to decimal
-- @ xto10 <hexadecimal>
-- @ xto10 <hexadecimal> 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
column errmsg format a6
SELECT CASE &2 WHEN 16 THEN LOWER ('&&1') ELSE '&&1' END base&2, TO_CHAR (SUM (n * POWER (&2, p))) base10,min(decode(n,-1,'bad!','good')) errmsg
--SELECT CASE &2 WHEN 16 THEN LOWER ('&&1') ELSE '&&1' END base&2, TO_CHAR (SUM (n * POWER (&2, p))) base10
FROM ( SELECT INSTR
(
CASE &&2
WHEN 32
THEN
'0123456789abcdfghjkmnpqrstuvwxyz'
WHEN 16
THEN
'0123456789abcdef'
ELSE
substr('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@_',1,&&2)
END
,SUBSTR
(
CASE &2 WHEN 16 THEN LOWER ('&&1') ELSE '&&1' END
,LEVEL
,1
)
)
- 1
N
,LENGTH ('&&1') - LEVEL P
,SUBSTR ('&&1', LEVEL, 1) C
FROM DUAL
CONNECT BY LEVEL <= LENGTH ('&&1'));
[20241110]使用xto10.sql指令碼遇到的問題.txt
相關文章
- [20231102]除錯bash shell指令碼遇到的問題.txt除錯指令碼
- [20210107]編寫bash shell指令碼遇到的問題.txt指令碼
- [20220102]使用ashtop與dashtop指令碼的小問題.txt指令碼
- [20231101]使用tpt seg2.sql指令碼問題.txtSQL指令碼
- [20240309]在windwos下使用sed遇到的問題.txt
- 寫python指令碼遇到的些許小問題Python指令碼
- [20220414]toad呼叫執行指令碼問題.txt指令碼
- Vue使用中遇到的程式碼問題Vue
- [20211210]優化遇到的奇怪問題.txt優化
- [20221125]設定hugepages遇到的問題.txt
- [20231017]使用dbms_xplan.display_awr查詢遇到的問題.txt
- [20211221]分析sql語句遇到的問題.txtSQL
- 使用git遇到的問題Git
- [20221126]tpt pr.sql指令碼執行問題.txtSQL指令碼
- laravel使用中遇到的問題Laravel
- Go mod 使用遇到的問題Go
- c++使用遇到的問題C++
- 遇到的編碼問題、時區問題整理
- 前端自動指令碼中常見的幾個問題,你遇到了嗎?前端指令碼
- [20181227]bbed的使用問題.txt
- [20200117]ashtop指令碼使用簡介.txt指令碼
- [20211118]mutexprof指令碼使用簡介.txtMutex指令碼
- 使用javap -v 命令遇到的問題Java
- 使用CodeMirror外掛遇到的問題
- PaddleOCR 安裝使用遇到的問題
- 使用git add 遇到的小問題Git
- Composer 使用遇到問題求助
- [20230329]記錄除錯sql語句遇到的問題.txt除錯SQL
- [20190314]使用strace注意的問題.txt
- [20181217]strace使用問題.txt
- [20240313]使用tpt ashtop.sql指令碼的困惑.txtSQL指令碼
- 使用Hibernate、JPA、Lombok遇到的有趣問題Lombok
- xxl-job使用遇到的問題(二)
- [20221130]最佳化備庫dg遇到的問題2.txt
- 使用bat指令碼執行MySQL命令時遇到的坑BAT指令碼MySql
- 關於MQTT 使用遇到問題MQQT
- [20210303]bbed使用小問題.txt
- [20210330]bash使用source or ..呼叫shell指令碼注意txt指令碼