sql >> Database >  >> RDS >> Mysql

JSON_STORAGE_SIZE() - Vind de opslaggrootte van een JSON-document in MySQL

In MySQL is de JSON_STORAGE_SIZE() functie retourneert het aantal bytes dat is gebruikt om de binaire representatie van een JSON-document op te slaan.

U geeft het JSON-document op als argument.

Als het argument een JSON . is kolom, retourneert deze functie de ruimte die is gebruikt om het JSON-document op te slaan zoals het in de kolom was ingevoegd, voorafgaand aan eventuele gedeeltelijke updates die er daarna op zijn uitgevoerd.

Als het argument een string is, retourneert de functie de hoeveelheid opslagruimte in de binaire JSON-representatie die is gemaakt door de string te ontleden als JSON en deze naar binair te converteren.

Syntaxis

De syntaxis gaat als volgt:

JSON_STORAGE_SIZE(json_val)

Waar json_val is het JSON-document waarvoor de opslaggrootte moet worden geretourneerd. Dit moet een geldig JSON-document zijn of een tekenreeks die als één document kan worden geparseerd.

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld om te demonstreren.

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

Resultaat:

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

In dit geval is de documentgrootte 13 bytes.

Hier is een iets groter JSON-document.

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

Resultaat:

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

Deze is dus 29 bytes.

En hier is weer een grotere.

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

Resultaat:

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

Voorbeeld 2 – Databasekolommen

Hier is een voorbeeld van het verkrijgen van de opslaggrootte van een JSON-document dat is opgeslagen in een databasekolom.

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

Resultaat:

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

In dit geval was de databasekolom een ​​JSON-kolom en bevat deze de volgende gegevens.

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

Resultaat:

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

In dit geval gebruikte ik de JSON_PRETTY() functie om de resultaten leesbaarder te maken.


  1. PostgreSQL:FATAL - Peer-authenticatie mislukt voor gebruiker (PG::ConnectionBad)

  2. Toekomst van Postgres-XL

  3. Oracle After Delete Trigger... Hoe te voorkomen dat de tabel muteert (ORA-04091)?

  4. Hoe om te gaan met daglichtbesparing in de Oracle-database?