Oracle dump函數的用法


一、函數標准格式:

DUMP(expr[,return_fmt[,start_position][,length]])

基本參數時4個,最少可以填的參數是0個。當完全沒有參數時,直接返回null。另外3個參數也都有各自的默認值:

expr:這個參數是要進行分析的表達式(數字或字符串等,可以是各個類型的值)

return_fmt:指返回參數的格式,有5種用法:

          1)8:以8進制返回結果的值

          2)10:以10進制返回結果的值(默認)

          3)16:以16進制返回結果的值

          4)17:以單字符的形式返回結果的值

          5)1000:以上4種加上1000,表示在返回值中加上當前字符集

start_position:開始進行返回的字符位置

length:需要返回的字符長度

二、示例

SYS@ tsid> select dump('abc') from dual;

DUMP('ABC')

----------------------

Typ=96 Len=3: 97,98,99

SYS@ tsid> select dump('abc',16) from dual;

DUMP('ABC',16)

----------------------

Typ=96 Len=3: 61,62,63

SYS@ tsid> select dump('abc',1016) from dual;

DUMP('ABC',1016)

--------------------------------------------

Typ=96 Len=3 CharacterSet=ZHS16GBK: 61,62,63

SYS@ tsid> select dump('abc',17,2,2) from dual;

DUMP('ABC',17,2,2

-----------------

Typ=96 Len=3: b,c

結果的格式一般都是類似:Typ=96 Len=3 [CharacterSet=ZHS16GBK]: 61,62,63

1、type

typ表示當前的expr值的類型。如:2表示NUMBER,96表示CHAR。

CODE TYP
----- ------------------------------
1      VARCHAR2
2      NUMBER
8      LONG
12     DATE
23     RAW
24     LONG RAW
69     ROWID
96     CHAR
112    CLOB
113    BLOB
114    BFILE
180    TIMESTAMP
181    TIMESTAMP WITH TIMEZONE
182    INTERVAL YEAR TO MONTH
183    INTERVAL DAY TO SECOND
208    UROWID
231    TIMESTAMP WITH LOCAL TIMEZONE

2、len

len表示該值所占用的字節數。

對於漢字,ZHS16GBK編碼一個漢字需要2個字節,UTF8需要3個字節。

SQL> select dump('多多',1010) from dual;

DUMP('多多',1010)
-------------------------------------------------------
Typ=96 Len=6 CharacterSet=UTF8: 229,164,154,229,164,154

SQL> select dump('多多',1010) from dual;

DUMP('多多',1010)
---------------------------------------------------
Typ=96 Len=4 CharacterSet=ZHS16GBK: 182,224,182,224

3、 Value

具體的存儲值。返回的數值就是Oracle在自己內部對前面的這個expr值得存儲形式。對於非漢字的普通字符串,可以理解為就是它的ASCII碼。舉例證明:

SYS@ tsid > select dump('a=?5') from dual;

DUMP('A=?5')

-------------------------

Typ=96 Len=4: 97,61,63,53

SYS@ tsid > select chr(97),chr(61),chr(63),chr(53) from dual;

C C C C

- - - -

a = ? 5

SYS@ tsid > select ascii('a'),ascii('='),ascii('?'),ascii('5') from dual;

ASCII('A') ASCII('=') ASCII('?') ASCII('5')

---------- ---------- ---------- ----------

        97         61         63         53


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM