説明
この関数は、JSONドキュメントを格納するために必要なバイナリバイト数を返します。パラメータがJSON列の場合、JSONドキュメントを格納するために使用されます。JSONの一部更新は、この関数の戻り値を変更しません。
構文
JSON_STORAGE_SIZE(json_val)
説明
json_val パラメータは、有効なJSONドキュメントであるか、文字列として解析できるものでなければなりません。json_val が文字列の場合、この関数はその文字列をJSONに解析し、バイナリ形式に変換した上で、格納領域のバイナリバイト数を返します。
json_val が NULL ではなく、かつJSONドキュメントではない、または正常に解析できない場合、エラーが報告されます。
パラメータが NULL の場合、NULL を返します。
例
obclient> CREATE TABLE jtbl (jcol JSON);
Query OK, 0 rows affected
obclient> INSERT INTO jtbl VALUES ('{"a": 1000, "b": "wxyz", "c": "[1, 3, 5, 7]"}');
Query OK, 1 row affected
obclient> SELECT jcol,JSON_STORAGE_SIZE(jcol) AS Size FROM jtbl;
+-----------------------------------------------+------+
| jcol | Size |
+-----------------------------------------------+------+
| {"a": 1000, "b": "wxyz", "c": "[1, 3, 5, 7]"} | 41 |
+-----------------------------------------------+------+
1 row in set
obclient> SET @jn = '[100, "sakila", [1, 3, 5], 425.05]';
Query OK, 0 rows affected
obclient> SELECT @jn, JSON_STORAGE_SIZE(@jn) AS Size;
+------------------------------------+------+
| @jn | Size |
+------------------------------------+------+
| [100, "sakila", [1, 3, 5], 425.05] | 38 |
+------------------------------------+------+
1 row in set
obclient> SET @jn = JSON_SET(@jn, '$[1]', "json");
Query OK, 0 rows affected
obclient> SELECT @jn, JSON_STORAGE_SIZE(@jn) AS Size;
+----------------------------------+------+
| @jn | Size |
+----------------------------------+------+
| [100, "json", [1, 3, 5], 425.05] | 36 |
+----------------------------------+------+
1 row in set