`

用dump函数查看oracle不同数据类型的存储方式

 
阅读更多

 

一、函数标准格式:

 

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

 

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

 

分享到:
评论

相关推荐

    Oracle基本数据类型存储格式浅析

    《Oracle基本数据类型存储格式详解》 Oracle数据库中,数据类型的存储格式对于数据库的性能和空间利用率至关重要。本文将深入探讨Oracle的字符类型、数字类型、日期类型、ROWID类型和RAW类型的基本数据类型的存储...

    oracle日期时间类型.docx

    Oracle 日期时间类型 Oracle 中的日期时间类型是指用于表示日期和时间的数据类型。其中 DATE 类型是固定占用 ...Oracle 的 DATE 类型是一个复杂的数据类型,需要了解其内部编码和存储方式,以便更好地使用 DATE 类型。

    Oracle存储过程-1.docx

    使用DUMP函数可以查看数据的内部存储结构,包括数据类型ID和实际长度,这对于理解和优化数据库设计非常有用。 在存储过程的上下文中,了解这些数据类型是非常重要的,因为它们会影响存储过程的输入参数、返回结果...

    oracle rac数据迁移

    数据迁移是一项复杂且重要的工作,它不仅涉及数据本身的迁移,还包括了表结构、存储过程、函数、同义词、视图、序列以及触发器等对象的同步。 #### 二、Oracle RAC 数据迁移步骤详解 ##### 2.1 准备阶段 - **表...

    Oracle SQL 内置函数大全(3)

    9. **BFILENAME(directory, file)**:此函数返回一个表示数据库外部二进制文件的名称,通常用于LOB(Large Object)数据类型的存储和访问。 10. **DECODE(expression, value1, result1, [value2, result2, ...])**...

    oracle数据库的表数据导出为csv文件

    通过上述分析,我们可以了解到利用Oracle PL/SQL编写存储过程或函数来实现表数据导出为CSV文件的具体步骤。这种方式不仅能够提高工作效率,还能确保数据的安全性和准确性。此外,通过创建通用的函数还可以进一步提升...

    Mysql数据库导入Oracle

    - 在进行数据迁移时,我们需要考虑不同数据库的数据类型转换。例如,MySQL的`VARCHAR2`对应Oracle的`VARCHAR2`,`INT`对应`NUMBER`,`DATE`在两个系统中都是日期类型,但Oracle的日期可以包含时间部分。 3. **数据...

    Oracle 字符集详解

    Oracle字符集是数据库管理系统Oracle中的一个重要概念,它决定了数据库如何存储和处理文本数据。字符集不仅影响着数据的准确性和一致性,还与全球化应用、数据迁移和数据交换密切相关。本篇将深入探讨Oracle字符集的...

    Oracle高版本的数据导入到低版本

    例如,Oracle 11g引入了一些新的数据类型,如INTERVAL YEAR TO MONTH,可能在10g中不存在。对于这样的情况,可能需要转换数据类型或者在导入后手动处理。 7. **PL/SQL代码和触发器**: 如果源数据库中包含PL/SQL...

    Oracle Number型数值存储与转换的实现详解

    Oracle在数据库内部通过相应的算法转换来进行数据存储,本文简单介绍Oracle的Number型数值存储及转换.这个内容是为了回答留言板上的2119号问题.我们可以通过DUMP函数来转换数字的存储形式,一个简单的输出类似如下格式...

    oracle11g 导到 10g

    6. **数据类型和功能兼容**:某些11g特有的数据类型或函数在10g中可能不存在,需要检查并处理这些差异。 7. **预处理和后处理脚本**:可能需要在迁移前后运行SQL脚本来调整数据库设置,例如索引、触发器、存储过程...

    Oracle数据库中业务数据文本导出.pdf

    Oracle数据库是世界上最流行的关系型数据库管理系统之一,它广泛应用于企业级的数据存储和管理。在Oracle数据库中,有时我们需要将业务数据导出为文本格式,这通常涉及到使用UTL_FILE包,这是一个内置的PL/SQL包,...

    史上最全Oracle数据泵常用命令.docx

    如果只想导出存储过程或函数等特定类型的对象,可以使用`include`参数: ```bash expdp system/oracle directory=my_dir dumpfile=expdp.dmp logfile=expdp.log schemas=scott include=procedure ``` 或者同时导出...

    Oracle的日期和时间详解.pdf

    DATE类型是Oracle中最基本的日期/时间数据类型,它可以存储从公元前4712年到公元9999年的日期和时间,包括世纪、年、月、日、小时、分钟和秒。然而,内部存储方式并不以人类可读的字符串格式存在,而是通过一系列...

    绝对干货-Oracle 数据泵命令全解析.docx

    本文将深入解析Oracle数据泵的使用,特别是expdp命令的详细操作和参数说明。 首先,数据泵操作需要在数据库服务器端进行,无法在客户端执行。在使用数据泵前,必须设置Directory对象,这是Oracle用来管理文件路径的...

    通过PLSQL的进行oracle数据库导入导出

    本文将深入探讨如何使用PL/SQL Developer来处理包括CLOB和BLOB数据类型的导出问题。 ### 第1章:导入数据的挑战 1. **非选择性导入**:Oracle的DUMP方式导出的数据在导入时无法仅选择特定表,导致在处理大量表时...

    oracle9i oracle11g oracle10g 性能调优 基础学习 视频地址

    - **表管理操作**: 如增加列、删除列、修改列的数据类型等。 ### 7. PL/SQL编程 - **PL/SQL基础**: PL/SQL是Oracle提供的过程语言,可以编写存储过程、函数等。 - **PL/SQL高级主题**: 如异常处理、游标使用、...

Global site tag (gtag.js) - Google Analytics