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




二、示例


SQL> select dump('abc') from dual;




DUMP('ABC')


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


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




SQL> select dump('abc',16) from dual;




DUMP('ABC',16)


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


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




SQL> select dump('abc',1016) from dual;

DUMP('ABC',1016)
--------------------------------------------
Typ=96 Len=3 CharacterSet=ZHS16GBK: 61,62,63



SQL> 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=4 CharacterSet=ZHS16GBK: 182,224,182,224



3、 Value


具体的存储值。返回的数值就是Oracle在自己内部对前面的这个expr值得存储形式。对于非汉字的普通字符串,可以理解为就是它的ASCII码。


举例证明:


SQL> select dump('a=?5') from dual;




DUMP('A=?5')


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


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




SQL> select chr(97),chr(61),chr(63),chr(53) from dual;




C C C C


- - - -


a = ? 5




SQL> 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获取字符串长度函数length()和hengthb() :

1.lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节
2.length(string)计算string所占的字符长度:返回字符串的长度,单位是字符
3.对于单字节字符,LENGTHB和LENGTH是一样的.
4.如可以用length('string')=lengthb('string')判断字符串是否含有中文。

注:一个汉字在Oracle数据库里占多少字节跟数据库的字符集有关,UTF8时,长度为三。

实例:


select length('箱') from dual      --返回1
select lengthb('箱') from dual    --返回2
select length('CC') from dual     --返回2
select lengthb('CC') from dual   --返回2

SQL> select length('箱') from dual;

LENGTH('箱')
------------
           1

SQL> select lengthb('箱') from dual;

LENGTHB('箱')
-------------
            2

SQL> select length('CC') from dual; 

LENGTH('CC')
------------
           2

SQL> select lengthb('CC') from dual;

LENGTHB('CC')
-------------

2

转自:http://blog.itpub.net/31397003/viewspace-2138878/

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

  1. Oracle ltrim() 函数用法

    Oracle ltrim() 函数用法 2015-03-21 20:42:40 Je_WangZhe 阅读数 8834更多 分类专栏: Oracle   版权声明:本文为博主原创文章,遵循CC 4.0 ...

  2. oracle trim函数用法详解

    在oracle数据库中,trim一般都是用在删除字符串两边的空格.实际上,trim也可以用来删除字符串两边的指定字符.并且trim指定删除的字符串只能是单个字符Oracle TRIM函数是很常见的函数 ...

  3. [转载]Oracle ltrim() 函数用法

    前面有说到过LPAD和RPAD这两个函数用法的文章,今天发现与之相反意义的另外两个函数,那就是LTRIM() RTRIM(). 这次就挑LTRIM() 这一函数来讲讲: 具体的语法格式如下: LTRI ...

  4. Oracle dump函数的用法

    一.函数标准格式: DUMP(expr[,return_fmt[,start_position][,length]]) 基本参数时4个,最少可以填的参数是0个.当完全没有参数时,直接返回null.另外 ...

  5. [转]Oracle dbms_random函数用法快速生成多条测试数据

    Java 随机生成中文姓名,手机号,邮编,住址:http://blog.csdn.net/xiaokui_wingfly/article/details/45913885 Java 批量随机生成身份证 ...

  6. Oracle单行函数用法

    单行函数分为五种类型:字符函数.数值函数.日期函数.转换函数.通用函数. 1.字符函数: 对于输入的字符转换为需要转为的字符或数值. upper()大写 --小写字母转为大写字母 --对于表指定的字符 ...

  7. oracle decode函数用法

    DECODE函数是ORACLE PL/SQL是功能强大的函数之中的一个,眼下还仅仅有ORACLE公司的SQL提供了此函数,其它数据库厂商的SQL实现还没有此功能.DECODE有什么用途 呢? 先构造一 ...

  8. oracle trunc函数用法

    转自:https://www.e-learn.cn/content/qita/699481 /**************日期********************/ select trunc(sy ...

  9. oracle wm_concat函数用法

    在Oracle中使用wm_concat(column)可以实现字段的分组合并,逗号分隔.

随机推荐

  1. Linux下查看目录文件大小

    1.ls -lht 查看当前目录下文件的大小 2.du -sh 查看当前文件夹的大小

  2. 解决idea 中web项目无法正常显示的问题

  3. 流程控制之☞ while 和 for 的故事

    学习三连鞭... 什么是循环? 为什么要有循环? 如何用循环? 循环的基本语法:while   和     for 先来看while循环: while条件:首先得是个循环体. 1.如果条件为真,那么循 ...

  4. Matplotlib处理csv文件

    csv模块包含在python标准库中,可用于分析CSV文件中的数据行,让我们能够快速提取感兴趣的值.首先绘制一个简单的折线图: 1 #!usr/bin/env python 2 #*-*Coding= ...

  5. Presto安装完成之后需要做的

    Presto因其优秀的查询速度被我们所熟知,它本身基于MPP架构,可以快速的对Hive数据进行查询,同时支持扩展Connector,目前对Mysql.MongoDB.Cassandra.Hive等等一 ...

  6. JAVA多线程下高并发的处理经验

    java中的线程:java中,每个线程都有一个调用栈存放在线程栈之中,一个java应用总是从main()函数开始运行,被称为主线程.一旦创建一个新的线程,就会产生一个线程栈.线程总体分为:用户线程和守 ...

  7. 广告计价方式:CPM,CPC,CPA

    转自知乎链接:https://www.zhihu.com/question/20416888/answer/15076251 1.CPM 收费最科学的办法是按照有多少人看到你的广告来收费.按访问人次收 ...

  8. 215. Kth Largest Element in an Array找出数组中第k大的值

    堆排序做的,没有全部排序,找到第k个就结束 public int findKthLargest(int[] nums, int k) { int num = 0; if (nums.length &l ...

  9. Docker安装系列教程

    首先准备一台Centos7版本的虚拟机,它支持docker容器技术.本案例使用centos7虚拟机安装docker容器. 一.安装 1.启动虚拟机,配置虚拟机能够访问互联网 2. 安装支持软件包,提供 ...

  10. 【转载】VUE的背景图引入

    我现在的项目要将登录页面的背景引一图片做为背景图片,按原jsp中的写法,发现无法找到背景图片,最后从网上查资料,采用上面的写法,成功显示出背景图片,参考网址 https://blog.csdn.net ...