sql >> Databasteknik >  >> RDS >> Mysql

JSON_STORAGE_SIZE() – Hitta lagringsstorleken för ett JSON-dokument i MySQL

I MySQL, JSON_STORAGE_SIZE() funktion returnerar antalet byte som används för att lagra den binära representationen av ett JSON-dokument.

Du tillhandahåller JSON-dokumentet som ett argument.

När argumentet är en JSON kolumnen returnerar den här funktionen utrymmet som används för att lagra JSON-dokumentet när det infogades i kolumnen, före eventuella partiella uppdateringar som kan ha utförts på det efteråt.

När argumentet är en sträng returnerar funktionen mängden lagringsutrymme i den binära JSON-representationen som skapas genom att tolka strängen som JSON och konvertera den till binär.

Syntax

Syntaxen ser ut så här:

JSON_STORAGE_SIZE(json_val)

Där json_val är JSON-dokumentet som lagringsstorleken ska returneras för. Detta måste vara ett giltigt JSON-dokument eller en sträng som kan tolkas som ett.

Exempel 1 – Grundläggande användning

Här är ett exempel att visa.

SELECT JSON_STORAGE_SIZE('{"a": 1}') Result;

Resultat:

+--------+
| Result |
+--------+
|     13 |
+--------+

I det här fallet är dokumentstorleken 13 byte.

Här är ett lite större JSON-dokument.

SELECT JSON_STORAGE_SIZE('{"a": 1, "b": 2, "c": 3}') Result;

Resultat:

+--------+
| Result |
+--------+
|     29 |
+--------+

Så den här är 29 byte.

Och här är en större igen.

SET @data = '{
  "Person": {
    "Age": 10,
    "Name": "Bart",
    "Friends": [
      "Bart",
      "Milhouse"
    ]
  }
}';
SELECT JSON_STORAGE_SIZE(@data) Result;

Resultat:

+--------+
| Result |
+--------+
|     86 |
+--------+

Exempel 2 – Databaskolumner

Här är ett exempel på hur du får lagringsstorleken för ett JSON-dokument som lagras i en databaskolumn.

USE Music;
SELECT JSON_STORAGE_SIZE(Contents) Size
FROM Collections
WHERE CollectionId = 1;

Resultat:

+------+
| Size |
+------+
|  503 |
+------+

I det här fallet var databaskolumnen en JSON-kolumn och den innehåller följande data.

USE Music;
SELECT JSON_PRETTY(Contents) Contents
FROM Collections
WHERE CollectionId = 1;

Resultat:

[
  {
    "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"
  }
]

I det här fallet använde jag JSON_PRETTY() funktion för att göra resultaten mer läsbara.


  1. Hur man använder regexp i sqlite

  2. DatabaseError:aktuell transaktion avbröts, kommandon ignoreras till slutet av transaktionsblocket?

  3. Hur man hämtar kalenderkvartal från ett datum i TSQL

  4. Fel när QUERY-paketet skickades