Oracle的dump函式

lhrbest發表於2017-09-20
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


SYS@ora11g > select dump(94082000000000000,16)  from dual;


DUMP(94082000000000000,
-----------------------
Typ=2 Len=4: c9,a,29,53


SYS@ora11g > select dump(94082000000000000654,16)  from dual;


DUMP(94082000000000000654,16)
---------------------------------------
Typ=2 Len=11: ca,5f,9,15,1,1,1,1,1,7,37



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


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自己的一個演算法。





About Me

.............................................................................................................................................

● 本文整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文部落格園地址:http://www.cnblogs.com/lhrbest

● 本文pdf版、個人簡介及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址:

.............................................................................................................................................

● QQ群號:230161599(滿)、618766405

● 微信群:可加我微信,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友646634621,註明新增緣由

● 於 2017-09-01 09:00 ~ 2017-09-30 22:00 在魔都完成

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

.............................................................................................................................................

小麥苗的微店

小麥苗出版的資料庫類叢書http://blog.itpub.net/26736162/viewspace-2142121/

.............................................................................................................................................

使用微信客戶端掃描下面的二維碼來關注小麥苗的微信公眾號(xiaomaimiaolhr)及QQ群(DBA寶典),學習最實用的資料庫技術。

   小麥苗的微信公眾號      小麥苗的DBA寶典QQ群1     小麥苗的DBA寶典QQ群2        小麥苗的微店

.............................................................................................................................................

Oracle的dump函式
DBA筆試面試講解群1
DBA筆試面試講解群2
歡迎與我聯絡



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2145228/,如需轉載,請註明出處,否則將追究法律責任。

相關文章