JSON_QUERY with MariaDB

Advertisements

I try to use MariaDB with JSON.

CREATE TABLE t (j LONGTEXT);

INSERT INTO t (j) VALUES ('{"a":"1"}');

INSERT INTO t (j) VALUES ('{"a":"2"}');

SELECT * FROM t WHERE JSON_VALUE(j,'$.a') = "1";
+-----------+
| j         |
+-----------+
| {"a":"1"} |
+-----------+

SELECT * FROM t WHERE JSON_VALUE(j,'$.a') = "2";
+-----------+
| j         |
+-----------+
| {"a":"2"} |
+-----------+

Since here it works like a charm.

But now I would not expect this.

SELECT JSON_QUERY(j, "$.a") AS a FROM t;
+------+
| a    |
+------+
| NULL |
| NULL |
+------+

I expected to get sort of this.

+------+
| a    |
+------+
| "1"  |
| "2"  |
+------+

Where I am wrong??

>Solution :

JSON_VALUE returns a scalar value, while JSON_QUERY returns an object or an array :

SELECT JSON_QUERY('{"a":"1"}', '$.a'); -- Returns NULL because "1" is a scalar value

However, if the values are objects or arrays, they will be returned as they are:

SELECT JSON_QUERY('{"key1":[1,2], "key2": {"a": 5}}', '$.key1'); -- Return [1,2] 

SELECT JSON_QUERY('{"key1":[1,2], "key2": {"a": 5}}', '$.key2'); -- Return {"a": 5}

Leave a ReplyCancel reply