【Oracle】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:需要返回的字符长度

二、示例

[email protected] tsid> select dump(‘abc‘) from dual;

DUMP(‘ABC‘)

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

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

[email protected] tsid> select dump(‘abc‘,16) from dual;

DUMP(‘ABC‘,16)

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

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

[email protected] tsid> select dump(‘abc‘,1016) from dual;

DUMP(‘ABC‘,1016)

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

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

[email protected] 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码。举例证明:

[email protected] tsid > select dump(‘a=?5‘) from dual;

DUMP(‘A=?5‘)

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

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

[email protected] tsid > select chr(97),chr(61),chr(63),chr(53) from dual;

C C C C

- - - -

a = ? 5

[email protected] tsid > select ascii(‘a‘),ascii(‘=‘),ascii(‘?‘),ascii(‘5‘) from dual;

ASCII(‘A‘) ASCII(‘=‘) ASCII(‘?‘) ASCII(‘5‘)

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

97         61         63         53

ASCII码表:


ASCII值


控制字符


ASCII值


控制字符


ASCII值


控制字符


ASCII值


控制字符


0


NUT


32


(space)


64


@


96



1


SOH


33



65


A


97


a


2


STX


34



66


B


98


b


3


ETX


35


#


67


C


99


c


4


EOT


36


$


68


D


100


d


5


ENQ


37


%


69


E


101


e


6


ACK


38


&


70


F


102


f


7


BEL


39


,


71


G


103


g


8


BS


40


(


72


H


104


h


9


HT


41


)


73


I


105


i


10


LF


42


*


74


J


106


j


11


VT


43


+


75


K


107


k


12


FF


44


,


76


L


108


l


13


CR


45


-


77


M


109


m


14


SO


46


.


78


N


110


n


15


SI


47


/


79


O


111


o


16


DLE


48


0


80


P


112


p


17


DCI


49


1


81


Q


113


q


18


DC2


50


2


82


R


114


r


19


DC3


51


3


83


X


115


s


20


DC4


52


4


84


T


116


t


21


NAK


53


5


85


U


117


u


22


SYN


54


6


86


V


118


v


23


TB


55


7


87


W


119


w


24


CAN


56


8


88


X


120


x


25


EM


57


9


89


Y


121


y


26


SUB


58


:


90


Z


122


z


27


ESC


59


;


91


[


123


{


28


FS


60


<


92


/


124


|


29


GS


61


=


93


]


125


}


30


RS


62


>


94


^


126


~


31


US


63


?


95



127


DEL

对于数字的存储,不像字符那么简单,而是应用Oracle自己的一个算法

时间: 2024-10-16 11:20:36

【Oracle】Oracle中dump函数的用法的相关文章

awk中split函数的用法

The awk function split(s,a,sep) splits a string s into an awk array a using the delimiter sep. time=12:34:56 echo $time | awk '{split($0,a,":" ); print a[1]}' 12   echo $time | awk '{split($0,a,":" ); print a[3]}' 34   echo $time | awk

PHP中spl_autoload_register函数的用法

spl_autoload_register (PHP 5 >= 5.1.2) spl_autoload_register — 注册__autoload()函数 说明bool spl_autoload_register ([ callback $autoload_function ] )将函数注册到SPL __autoload函数栈中.如果该栈中的函数尚未激活,则激活它们. 如果在你的程序中已经实现了__autoload函数,它必须显式注册到__autoload栈中.因为 spl_autoload

Delphi中 StrToIntDef函数的用法

Delphi中 StrToIntDef函数的用法: 比如我要判断一个文本框里输入的字符串能不能转换为integer类型,如果能,则返回转换后的整型数据,如果不能,则返回整数0,那么我就可以用strtointdef这个函数. 写法如下: 假设edit1.text:='1000'; 则strtointdef(edit1.text,0)返回值为1000. 如果edit1.text:='fdafds',则返回值为0. (如果你用strtoint(edit1.text)当edit1.text:='fdad

C++中substr函数的用法

原文地址:http://blog.csdn.net/no_retreats/article/details/7853066 C++中substr函数的用法 #include<string>#include<iostream>using namespace std; main(){string s("12345asdf");string a=s.substr(0,5);       //获得字符串s中 从第0位开始的长度为5的字符串//默认时的长度为从开始位置到尾

解析PHP中ob_start()函数的用法

解析PHP中ob_start()函数的用法 本篇文章是对PHP中ob_start()函数的用法进行了详细的分析介绍,需要的朋友参考下 ob_start()函数用于打开缓冲区,比如header()函数之前如果就有输出,包括回车/空格/换行/都会有"Header had all ready send by"的错误,这时可以先用ob_start()打开缓冲区PHP代码的数据块和echo()输出都会进入缓冲区而不会立刻输出.当然打开缓冲区的作用很 多,只要发挥你的想象.可以总结以下四点: 1.

(转)解析PHP中ob_start()函数的用法

本篇文章是对PHP中ob_start()函数的用法进行了详细的分析介绍,需要的朋友参考下 ob_start()函数用于打开缓冲区,比如header()函数之前如果就有输出,包括回车/空格/换行/都会有"Header had all ready send by"的错误,这时可以先用ob_start()打开缓冲区PHP代码的数据块和echo()输出都会进入缓冲区而不会立刻输出.当然打开缓冲区的作用很多,只要发挥你的想象.可以总结以下四点: 1.用于header()之前ob_start();

CC++中sizeof函数的用法

C/C++中sizeof()函数的用法 学习C/C++有时会遇到下面的情况: 已知 char *str1="absde"; char str2[]="absde"; char str3[8]={'a'}; char str4 [] = "0123456789"; 为什么sizeof(str1)=4 sizeof(str2)=6; sizeof(str3)=8; sizeof(str4)=11;呢? 丈二和尚摸不着头脑,接下来我们一起好好讨论讨论,

python中pop()函数的用法

python中pop()函数的用法 pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. 语法:list.pop(obj=list[-1]) //默认为 index=-1,删除最后一个列表值. obj -- 可选参数,要移除列表元素的对象. 该方法返回从列表中移除的元素对象. sentence=['All', 'good', 'things', 'come', 'to' ,'those', 'who', 'wait.'] print("默认为 index=-1,删除

Oracle数据库中序列(SEQUENCE)的用法详解

在Oracle数据库中,序列的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值.本文我们主要介绍了序列的用法,希望能够对您有所帮助. AD: 在Oracle数据库中,什么是序列呢?它的用途是什么?序列(SEQUENCE)其实是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值. 创建序列需要CREATE SEQUENCE系统权限