§ Oracle兼容-函数-DUMP()函数


§ 1. 语法

DUMP( expr[, return_format] [, start_position] [, length] )
1

§ 2. 定义和用法

基本参数4个,至少要传入参数expr。

  • expr,要进行分析的表达式,可以是数字或字符串等,也可以是各个类型的值。

注意:

  • 不支持大对象类型(如:BLOBCLOBJSON等)、枚举类型以及空间类型。

  • 另外对如:set @a=xxx; 这种 @a 临时变量参数也暂不支持。

  • 当参数expr为NULL,直接返回NULL。

  • return_fmt,设置返回参数的格式,有6种用法:

    • 2:以2进制返回结果值。
    • 8:以8进制返回结果值。
    • 10:以10进制返回结果值(默认)。
    • 16:以16进制返回结果值。
    • 大于等于17时:以单字符的形式返回结果值。
    • 1000:以上前4种加上1000,表示在返回值中加上当前处理数据使用字符集(字符集由系统选项 character_set_system 定义)。

说明:return_fmt 参数不符合上述格式要求时,则默认使用 10进制 作为返回结果格式。

  • start_position,指定返回的字符起始位置,若参数超过 expr 实际长度则返回NULL。

  • length,指定返回的字符长度,若参数超过 expr 实际长度则返回 start_position 之后剩余长度的数据。

§ 3. 示例

-- 1.参数expr为NULL
greatsql> SELECT DUMP(NULL);
+------------+
| DUMP(NULL) |
+------------+
| NULL       |
+------------+

-- 2.除参数expr外,其他参数默认(默认以10进制返回数据)
greatsql> SELECT DUMP('GreatSQL');
+-----------------------------------------------+
| DUMP('GreatSQL')                              |
+-----------------------------------------------+
| Type=15 Len=10:8,0,71,114,101,97,116,83,81,76 |
+-----------------------------------------------+

-- 3.从位置3开始的数据,以10进制形式返回
greatsql> SELECT DUMP('GreatSQL', 10, 3);
+-------------------------------------------+
| DUMP('GreatSQL', 10, 3)                   |
+-------------------------------------------+
| Type=15 Len=10:71,114,101,97,116,83,81,76 |
+-------------------------------------------+

-- 4.以2进制形式返回数据
greatsql> SELECT DUMP('GreatSQL', 2, 3);
+--------------------------------------------------------------------------------+
| DUMP('GreatSQL', 2, 3)                                                         |
+--------------------------------------------------------------------------------+
| Type=15 Len=10:1000111,1110010,1100101,1100001,1110100,1010011,1010001,1001100 |
+--------------------------------------------------------------------------------+

-- 5.以10进制形式返回数据
greatsql> SELECT DUMP('GreatSQL', 10);
+-----------------------------------------------+
| DUMP('GreatSQL', 10)                          |
+-----------------------------------------------+
| Type=15 Len=10:8,0,71,114,101,97,116,83,81,76 |
+-----------------------------------------------+

-- 6.以16进制形式返回数据
greatsql> SELECT DUMP('GreatSQL', 16);
+----------------------------------------------+
| DUMP('GreatSQL', 16)                         |
+----------------------------------------------+
| Type=15 Len=10:08,00,47,72,65,61,74,53,51,4c |
+----------------------------------------------+

-- 7.以单字符形式返回数据
greatsql> SELECT DUMP('GreatSQL', 17);
+-------------------------------+
| DUMP('GreatSQL', 17)          |
+-------------------------------+
| Type=15 Len=8:G,r,e,a,t,S,Q,L |
+-------------------------------+

-- 8.以10进制形式返回数据,并显示字符集信息
greatsql> SELECT DUMP('GreatSQL', 1010);
+--------------------------------------------------------------------+
| DUMP('GreatSQL', 1010)                                             |
+--------------------------------------------------------------------+
| Type=15 Len=10 CharacterSet=utf8mb3:8,0,71,114,101,97,116,83,81,76 |
+--------------------------------------------------------------------+

-- 9.以16进制形式返回数据,并显示字符集信息
greatsql> SELECT DUMP('GreatSQL', 1016);
+-------------------------------------------------------------------+
| DUMP('GreatSQL', 1016)                                            |
+-------------------------------------------------------------------+
| Type=15 Len=10 CharacterSet=utf8mb3:08,00,47,72,65,61,74,53,51,4c |
+-------------------------------------------------------------------+

-- 10.以单字符形式返回数据,并显示字符集信息
+----------------------------------------------------+
| DUMP('GreatSQL', 1017)                             |
+----------------------------------------------------+
| Type=15 Len=8 CharacterSet=utf8mb3:G,r,e,a,t,S,Q,L |
+----------------------------------------------------+

-- 11.参数length超过expr实际长度
greatsql> SELECT DUMP('GreatSQL', 16, 3, 99);
+----------------------------------------+
| DUMP('GreatSQL', 16, 3, 99)            |
+----------------------------------------+
| Type=15 Len=10:47,72,65,61,74,53,51,4c |
+----------------------------------------+

-- 12.参数start_position超过expr实际长度
greatsql> SELECT DUMP('GreatSQL', 16, 99, 3);
+-----------------------------+
| DUMP('GreatSQL', 16, 99, 3) |
+-----------------------------+
| NULL                        |
+-----------------------------+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94

扫码关注微信公众号

greatsql-wx