JSON函数
序号 |
MySQL数据库 |
GaussDB数据库 |
差异 |
---|---|---|---|
1 |
JSON_APPEND() |
支持。 |
- |
2 |
JSON_ARRAY() |
支持。 |
- |
3 |
JSON_ARRAY_APPEND() |
支持。 |
- |
4 |
JSON_ARRAY_INSERT() |
支持。 |
- |
5 |
JSON_CONTAINS() |
支持。 |
- |
6 |
JSON_CONTAINS_PATH() |
支持。 |
- |
7 |
JSON_DEPTH() |
支持。 |
- |
8 |
JSON_EXTRACT() |
支持。 |
- |
9 |
JSON_INSERT() |
支持。 |
- |
10 |
JSON_KEYS() |
支持。 |
- |
11 |
JSON_LENGTH() |
支持。 |
- |
12 |
JSON_MERGE() |
支持。 |
- |
13 |
JSON_MERGE_PATCH() |
支持。 |
- |
14 |
JSON_MERGE_PRESERVE() |
支持。 |
- |
15 |
JSON_OBJECT() |
支持。 |
- |
16 |
JSON_QUOTE() |
支持。 |
- |
17 |
JSON_REMOVE() |
支持。 |
- |
18 |
JSON_REPLACE() |
支持。 |
- |
19 |
JSON_SEARCH() |
支持。 |
- |
20 |
JSON_SET() |
支持。 |
- |
21 |
JSON_TYPE() |
支持。 |
- |
22 |
JSON_UNQUOTE() |
支持,有差异。 |
在转义字符中\0和\uxxxx的场景与MySQL有差异: SELECT JSON_UNQUOTE('"\0"'); mysql> SELECT JSON_UNQUOTE('"\0"'); ERROR 3141 (22032): Invalid JSON text in argument 1 to function json_unquote: "Missing a closing quotation mark in string." at position 1. m_db=# select JSON_UNQUOTE('"\0"'); ERROR: invalid byte sequence for encoding "UTF8": 0x00 |
23 |
JSON_VALID() |
支持。 |
- |
JSON函数差异说明:对于JSON函数和其他字符入参函数,如果含有转义字符的输入,默认情况下与MySQL存在一定差异,需要设置GUC参数(SET m_format_behavior_compat_options = 'enable_escape_string';);对于转义字符的场景才会与MySQL兼容,在转义字符中,\f、\Z、\0和\uxxxx的场景与MySQL有差异。