2017-06-01 28 views
0

根据文档,我发现使用带有空JSON数组的JSON_ARRAY_APPEND令人困惑(而不是工作)。我正在使用最新版本的MariaDb 10.2.6。MariaDb:JSON_ARRAY_APPEND来清空数组

当我这样做:如预期

SELECT JSON_ARRAY_APPEND('[1]', '$', JSON_EXTRACT('{"test":123}', '$')); 

结果:

[1, {"test": 123}] 

(同样具有:

SELECT JSON_ARRAY_APPEND(JSON_EXTRACT('[1]', '$'), '$', JSON_EXTRACT('{"test":123}', '$')); 

但是,当我上操作空阵列:

SELECT JSON_ARRAY_APPEND('[]', '$', JSON_EXTRACT('{"test":123}', '$')); 

结果是:

(NULL) 

因为这个我不能空数组更新场可能。当我这样做:

UPDATE `test` SET `test`.`log` = JSON_ARRAY_APPEND(`test`.`log`, '$', JSON_EXTRACT('{"test":123}', '$')) 

我得到一个错误:

(4038) Syntax error in JSON text in argument 1 to function 'json_array_append' at position 2 

难道我得到的东西错了或者是某种错误或警告的?

Regards, JK。

回答

0

MariaDB [test]> SELECT JSON_ARRAY_APPEND(JSON_ARRAY(''), '$', JSON_EXTRACT('{"test":123}', '$'))\G 
*************************** 1. row *************************** 
JSON_ARRAY_APPEND(JSON_ARRAY(''), '$', JSON_EXTRACT('{"test":123}', '$')): ["", {"test": 123}] 
1 row in set (0.00 sec) 
+0

你是对的。这是文档所说的。但我不是在说NULL,我在讨论空数组'''''。 –

+0

对不起,我更新了我的答案,是你想要的结果? –

+0

嗨。谢谢,但不是真的。我将它存储在现场。默认值是'[]'。我需要它与此合作。 –