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')判斷字串是否含有中文。
注:一個漢字在裡佔多少位元組跟資料庫的字符集有關,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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2138878/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle的dump函式Oracle函式
- oracle dump 函式Oracle函式
- Oracle dump函式Oracle函式
- 【Oracle的NVL函式用法】Oracle函式
- Oracle trunc()函式的用法Oracle函式
- Oracle 函式 Translate 的用法Oracle函式
- oracle的with函式用法示例Oracle函式
- Oracle dump函式的與utl_rawOracle函式
- DUMP函式函式
- 【函式】DUMP函式
- oracle table()函式用法Oracle函式
- oracle dump函式解析_字符集Oracle函式
- Oracle to_date()函式的用法Oracle函式
- 【轉】oracle的substr函式的用法Oracle函式
- 使用oracle utl_raw作為dump的逆函式Oracle函式
- 學習dump函式函式
- DUMP函式結果的意思函式
- oracle資料庫常用分析函式與聚合函式的用法Oracle資料庫函式
- Oracle - DBMS_LOB函式和用法Oracle函式
- pipe row的用法, Oracle split 函式寫法.Oracle函式
- oracle中函式to_char()的用法介紹Oracle函式
- PostgreSQL DBA(73) - dump函式SQL函式
- DUMP函式(轉載eygle)函式
- ascii函式和substr函式的用法ASCII函式
- 一個有用的函式-實現dump函式的convert!函式
- GetModuleFileName函式的用法函式
- createStyleSheet()函式的用法函式
- qsort函式的用法函式
- COALESCE函式的用法。函式
- Oracle 中的 ROW_NUMBER() OVER() 分析函式的用法Oracle函式
- Instr函式的用法函式
- fork()函式的基本用法函式
- openat()函式的用法示例函式
- Translate函式用法函式
- abs函式用法函式
- oracle中dump函式及oracle NUMBER型別內部儲存機制Oracle函式型別
- C語言中函式printf()和函式scanf()的用法C語言函式
- Oracle的regexp_like函式用法一例Oracle函式