@@ -24,60 +24,134 @@ specific language governing permissions and limitations
24
24
under the License.
25
25
-->
26
26
27
- ## json_parse
28
27
## 描述
28
+ 将原始 JSON 字符串解析成 JSON 二进制格式。为了满足不同的异常数据处理需求,提供不同的 JSON_PARSE 系列函数,具体如下:
29
+ * JSON_PARSE 解析 JSON 字符串,当输入的字符串不是合法的 JSON 字符串时,报错。
30
+ * JSON_PARSE_ERROR_TO_INVALID 解析 JSON 字符串,当输入的字符串不是合法的 JSON 字符串时,返回 NULL。
31
+ * JSON_PARSE_ERROR_TO_NULL 解析 JSON 字符串,当输入的字符串不是合法的 JSON 字符串时,返回 NULL。
32
+ * JSON_PARSE_ERROR_TO_VALUE 解析 JSON 字符串,当输入的字符串不是合法的 JSON 字符串时,返回参数 default_json_str 指定的默认值。
33
+ * JSON_PARSE_NOTNULL 解析 JSON 字符串,当输入的字符串不是合法的 JSON 字符串时,返回 NULL。
34
+
35
+ ## 别名
36
+ * JSONB_PARSE 同 ` JSON_PARSE `
37
+ * JSONB_PARSE_ERROR_TO_INVALID 同 ` JSON_PARSE_ERROR_TO_INVALID `
38
+ * JSONB_PARSE_ERROR_TO_NULL 同 ` JSON_PARSE_ERROR_TO_NULL `
39
+ * JSONB_PARSE_ERROR_TO_VALUE 同 ` JSON_PARSE_ERROR_TO_VALUE `
40
+ * JSONB_PARSE_NOTNULL 同 ` JSON_PARSE_NOTNULL `
41
+
29
42
## 语法
30
43
31
44
``` sql
32
- JSON json_parse(VARCHAR json_str)
33
- JSON json_parse_error_to_null(VARCHAR json_str)
34
- JSON json_parse_error_to_value(VARCHAR json_str, VARCHAR default_json_str)
45
+ JSON_PARSE (< json_str> )
46
+ ```
47
+ ``` sql
48
+ JSON_PARSE_ERROR_TO_INVALID (< json_str> )
49
+ ```
50
+ ``` sql
51
+ JSON_PARSE_ERROR_TO_NULL (< json_str> )
52
+ ```
53
+
54
+ ``` sql
55
+ JSON_PARSE_ERROR_TO_VALUE (< json_str> , < default_json_str> )
56
+ ```
57
+ ``` sql
58
+ JSONB_PARSE_NOTNULL (< json_str> )
35
59
```
36
60
37
- 将原始JSON字符串解析成JSON二进制格式。为了满足不同的异常数据处理需求,提供不同的json_parse系列函数,具体行为如下:
38
- - json_str为NULL时,都返回NULL
39
- - json_str为非法JSON字符串时
40
- - json_parse报错
41
- - json_parse_error_to_null返回NULL,
42
- - json_parse_error_to_value返回参数default_json_str指定的默认值
61
+ ## 参数
62
+ | 参数 | 描述 |
63
+ | --------------| -----------------------------|
64
+ | ` <json_str> ` | 要提取的 JSON 类型的参数或者字段 |
65
+ | ` <default_json_str> ` | 当输入的字符串不是合法的 JSON 字符串时,返回参数 default_json_str 指定的默认值。 |
66
+
67
+ ## 返回值
68
+ * json_str 为 NULL 时,都返回 NULL
69
+ * json_str 为非法 JSON 字符串时
70
+ - JSON_PARSE 报错
71
+ - JSON_PARSE_ERROR_TO_INVALID 返回 NULL
72
+ - JSON_PARSE_ERROR_TO_NULL 返回 NULL
73
+ - JSON_PARSE_ERROR_TO_VALUE 返回参数 default_json_str 指定的默认值
74
+ - JSON_PARSE_NOTNULL 返回 NULL
75
+
43
76
44
- ## 举例
45
77
46
- 1 . 正常JSON字符串解析
78
+ ## 示例
47
79
80
+ 1 . 正常 JSON 字符串解析
81
+ ``` sql
82
+ SELECT json_parse(' {"k1":"v31","k2":300}' );
48
83
```
49
- mysql> SELECT json_parse('{"k1":"v31","k2":300}');
84
+ ``` text
50
85
+--------------------------------------+
51
86
| json_parse('{"k1":"v31","k2":300}') |
52
87
+--------------------------------------+
53
88
| {"k1":"v31","k2":300} |
54
89
+--------------------------------------+
55
- 1 row in set (0.01 sec)
56
90
```
57
-
58
- 2 . 非法JSON字符串解析
59
-
91
+ ``` sql
92
+ SELECT json_parse_error_to_invalid(' {"k1":"v31","k2":300}' );
93
+ ```
94
+ ``` text
95
+ +-------------------------------------------------------+
96
+ | jsonb_parse_error_to_invalid('{"k1":"v31","k2":300}') |
97
+ +-------------------------------------------------------+
98
+ | {"k1":"v31","k2":300} |
99
+ +-------------------------------------------------------+
100
+ ```
101
+ ``` sql
102
+ SELECT json_parse_notnull(' {"a":"b"}' );
60
103
```
61
- mysql> SELECT json_parse('invalid json');
104
+ ``` text
105
+ +----------------------------------+
106
+ | jsonb_parse_notnull('{"a":"b"}') |
107
+ +----------------------------------+
108
+ | {"a":"b"} |
109
+ +----------------------------------+
110
+ ```
111
+ ``` sql
112
+ SELECT json_parse_error_to_value(' {"k1":"v31","k2":300}' ,' {}' );
113
+ ```
114
+ ``` text
115
+ +-----------------------------------------------------------+
116
+ | jsonb_parse_error_to_value('{"k1":"v31","k2":300}', '{}') |
117
+ +-----------------------------------------------------------+
118
+ | {"k1":"v31","k2":300} |
119
+ +-----------------------------------------------------------+
120
+ ```
121
+ 2 . 非法 JSON 字符串解析
122
+ ``` sql
123
+ SELECT json_parse(' invalid json' );
124
+ ```
125
+ ``` text
62
126
ERROR 1105 (HY000): errCode = 2, detailMessage = json parse error: Invalid document: document must be an object or an array for value: invalid json
63
-
64
- mysql> SELECT json_parse_error_to_null('invalid json');
127
+ ```
128
+ ``` sql
129
+ SELECT json_parse_error_to_invalid(' invalid json' );
130
+ ```
131
+ ``` text
132
+ +----------------------------------------------+
133
+ | jsonb_parse_error_to_invalid('invalid json') |
134
+ +----------------------------------------------+
135
+ | NULL |
136
+ +----------------------------------------------+
137
+ ```
138
+ ``` sql
139
+ SELECT json_parse_notnull(' invalid json' );
140
+ ```
141
+ ``` text
65
142
+-------------------------------------------+
66
- | json_parse_error_to_null ('invalid json') |
143
+ | jsonb_parse_error_to_null ('invalid json') |
67
144
+-------------------------------------------+
68
145
| NULL |
69
146
+-------------------------------------------+
70
- 1 row in set (0.01 sec)
71
-
72
- mysql> SELECT json_parse_error_to_value('invalid json', '{}');
147
+ ```
148
+ ``` sql
149
+ SELECT json_parse_error_to_value(' invalid json' , ' {}' );
150
+ ```
151
+ ``` text
73
152
+--------------------------------------------------+
74
153
| json_parse_error_to_value('invalid json', '{}') |
75
154
+--------------------------------------------------+
76
155
| {} |
77
156
+--------------------------------------------------+
78
- 1 row in set (0.00 sec)
79
- ```
80
-
81
-
82
- ### keywords
83
- JSONB, JSON, json_parse, json_parse_error_to_null, json_parse_error_to_value
157
+ ```
0 commit comments