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. Flutter ListTile - Flutter每周一组件

    该文章属于[Flutter每周一组件]系列,其它组件可以查看该系列下的文章,该系列会不间断更新:所有组件的demo已经上传值Github: https://github.com/xj124456/fl ...

  2. HCIP --- BGP实验

    实验拓扑: 要求: R1.R2是EBGP关系,R2.R4是IBGP关系,R4.R5是EBGP邻居关系 R1与R5的环回可以通信 1.配置IP地址 2.BGP承载与IGP之上,所以给AS 2 启用IGP ...

  3. C# Socket使用以及DotNetty和Supersocket 框架

    1.Socket服务端与客户端通话 1服务端 using System; using System.Collections.Generic; using System.Linq; using Syst ...

  4. Core3.0使用Swagger接口文档

    前言 此方法为百度搜索结果,原文链接找不到了 步骤 1.引用Nuget Swashbuckle.AspNetCore 2.Startup.cs配置 //注册swagger服务,定义1个或者多个swag ...

  5. C#中RDLC报表中日期显示格式

    转换为日期类型再格式化 =CDate(Fields!UseDate.Value).ToString("yyyy-MM-dd") 使用Format ==Format(Fields!C ...

  6. [Python] iupdatable包:Status 模块使用介绍

    常用状态做的一个集合,方便用在函数返回值中区分不同状态结果. 简单举例: from iupdatable import Status def fun(): print("do somethi ...

  7. mysql数据安全之利用二进制日志mysqlbinlog备份数据

    mysql数据安全之利用二进制日志mysqlbinlog备份数据 简介:如何利用二进制日志来备份数据 什么是二进制日志: 二进制日志就是记录着mysql数据库中的一些写入性操作,比如一些增删改,但是, ...

  8. 你说一下Redis为什么快吧,怎么实现高可用,还有持久化怎么做的?

    前言 作为Java程序员,在面试过程中,缓存相关的问题是躲不掉的,肯定会问,例如缓存一致性问题,缓存雪崩.击穿.穿透等.说到缓存,那肯定少不了Redis,我在面试的时候也是被问了很多关于Redis相关 ...

  9. java Swing组件随着窗口拖动等比移动或等比放大

    实现原理很简单, 1清空布局(使用绝对布局) 2添加监听器(监听窗口是否被拖动) 3在监听器里面动态调整 组件的位置 效果如下: 拖动之后效果: 代码实现: import java.awt.Event ...

  10. JAVADOC 文档注释命令

    简介 javadoc命令是用来生成自己API文档的 javadoc参数信息 @author 作者名 @version 版本号 @since 指明需要最早使用的jdk版本 @param 参数名 @ret ...