JSON函数
JSON函数差异说明:对于JSON函数和其他字符入参函数,如果输入中包含转义字符,默认情况下会与MySQL有一定差异。要实现与MySQL的兼容,需要设置GUC参数standard_conforming_strings取值为off,在这种情况下,转义字符的处理将与MySQL兼容,但是使用转义字符\f、\Z、\0和\uxxxx的场景会与MySQL存在差异。
| 函数名 | 与MySQL的差异 |
|---|---|
| JSON_APPEND() | - |
| JSON_ARRAY() | - |
| JSON_ARRAY_APPEND() | - |
| JSON_ARRAY_INSERT() | - |
| JSON_CONTAINS() | - |
| JSON_CONTAINS_PATH() | - |
| JSON_DEPTH() | - |
| JSON_EXTRACT() | - |
| JSON_INSERT() | - |
| JSON_KEYS() | - |
| JSON_LENGTH() | - |
| JSON_MERGE() | - |
| JSON_MERGE_PATCH() | - |
| JSON_MERGE_PRESERVE() | - |
| JSON_OBJECT() | - |
| JSON_QUOTE() | - |
| JSON_REMOVE() | - |
| JSON_REPLACE() | - |
| JSON_SEARCH() | - |
| JSON_SET() | - |
| JSON_TYPE() | - |
| 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 SELECT json_unquote('"\\u4656"');
mysql> SELECT json_unquote('"\\u4656"');
+---------------------------+
| json_unquote('"\\u4656"') |
+---------------------------+
| 䙖 |
+---------------------------+
1 row in set (0.00 sec)
m_db=# SELECT json_unquote('"\\u4656"');
json_unquote
--------------
u4656
(1 row) |
| JSON_VALID() | - |