You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "xuqianjin (JIRA)" <ji...@apache.org> on 2019/01/26 11:02:00 UTC

[jira] [Created] (CALCITE-2808) Add the JSON_LENGTH function

xuqianjin created CALCITE-2808:
----------------------------------

             Summary: Add the JSON_LENGTH function 
                 Key: CALCITE-2808
                 URL: https://issues.apache.org/jira/browse/CALCITE-2808
             Project: Calcite
          Issue Type: Improvement
            Reporter: xuqianjin
            Assignee: Julian Hyde


{{JSON_LENGTH(*json_doc*[, *path*])}}

Returns the length of a JSON document, or, if a _path_ argument is given, the length of the value within the document identified by the path. Returns {{NULL}} if any argument is {{NULL}} or the _path_ argument does not identify a value in the document. An error occurs if the _json_doc_ argument is not a valid JSON document or the _path_ argument is not a valid path expression or contains a {*} or {{}}*{{*}} wildcard.

The length of a document is determined as follows:
 * The length of a scalar is 1.

 * The length of an array is the number of array elements.

 * The length of an object is the number of object members.

 * The length does not count the length of nested arrays or objects.

SELECT JSON_LENGTH('[1, 2, \\{"a": 3}]');
+---------------------------------+
|JSON_LENGTH('[1, 2, \\{"a": 3}]')|

+---------------------------------+
|                              3|

+---------------------------------+
SELECT JSON_LENGTH('\{"a": 1, "b": {"c": 30}}');
+-----------------------------------------+
|JSON_LENGTH('\{"a": 1, "b": {"c": 30}}')|

+-----------------------------------------+
|                                      2|

+-----------------------------------------+
SELECT JSON_LENGTH('\{"a": 1, "b": {"c": 30}}', '$.b');
+------------------------------------------------+
|JSON_LENGTH('\{"a": 1, "b": {"c": 30}}', '$.b')|

+------------------------------------------------+
|                                             1|

+------------------------------------------------+



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)