MySQLでは、JSON_STORAGE_SIZE() 関数は、JSONドキュメントのバイナリ表現を格納するために使用されるバイト数を返します。
JSONドキュメントを引数として提供します。
引数がJSONの場合 columnの場合、この関数は、JSONドキュメントが列に挿入されたときに、後で実行された可能性のある部分的な更新の前に、JSONドキュメントを格納するために使用されるスペースを返します。
引数が文字列の場合、関数は、文字列をJSONとして解析し、それをバイナリに変換することによって作成されたJSONバイナリ表現のストレージスペースの量を返します。
構文
構文は次のようになります:
JSON_STORAGE_SIZE(json_val)
ここで、json_val ストレージサイズを返すJSONドキュメントです。これは、有効なJSONドキュメントまたは1つとして解析できる文字列である必要があります。
例1-基本的な使用法
実例を示します。
SELECT JSON_STORAGE_SIZE('{"a": 1}') Result;
結果:
+--------+ | Result | +--------+ | 13 | +--------+
この場合、ドキュメントサイズは13バイトです。
これが少し大きいJSONドキュメントです。
SELECT JSON_STORAGE_SIZE('{"a": 1, "b": 2, "c": 3}') Result;
結果:
+--------+ | Result | +--------+ | 29 | +--------+
つまり、これは29バイトです。
そして、これもまた大きなものです。
SET @data = '{
"Person": {
"Age": 10,
"Name": "Bart",
"Friends": [
"Bart",
"Milhouse"
]
}
}';
SELECT JSON_STORAGE_SIZE(@data) Result;
結果:
+--------+ | Result | +--------+ | 86 | +--------+
例2–データベース列
データベース列に保存されているJSONドキュメントのストレージサイズを取得する例を次に示します。
USE Music; SELECT JSON_STORAGE_SIZE(Contents) Size FROM Collections WHERE CollectionId = 1;
結果:
+------+ | Size | +------+ | 503 | +------+
この場合、データベース列はJSON列であり、次のデータが含まれています。
USE Music; SELECT JSON_PRETTY(Contents) Contents FROM Collections WHERE CollectionId = 1;
結果:
[
{
"Albums": [
{
"AlbumName": "Powerage"
}
],
"ArtistName": "AC/DC"
},
{
"Albums": [
{
"AlbumName": "Ziltoid the Omniscient"
},
{
"AlbumName": "Casualties of Cool"
},
{
"AlbumName": "Epicloud"
}
],
"ArtistName": "Devin Townsend"
},
{
"Albums": [
{
"AlbumName": "Powerslave"
},
{
"AlbumName": "Somewhere in Time"
},
{
"AlbumName": "Piece of Mind"
},
{
"AlbumName": "Killers"
},
{
"AlbumName": "No Prayer for the Dying"
}
],
"ArtistName": "Iron Maiden"
}
]
この場合、JSON_PRETTY()を使用しました 結果を読みやすくするための関数。