sql >> Database teknologi >  >> RDS >> Mysql

JSON_STORAGE_SIZE() – Find lagerstørrelsen for et JSON-dokument i MySQL

I MySQL er JSON_STORAGE_SIZE() funktion returnerer antallet af bytes, der bruges til at gemme den binære repræsentation af et JSON-dokument.

Du angiver JSON-dokumentet som et argument.

Når argumentet er en JSON kolonne, returnerer denne funktion den plads, der blev brugt til at gemme JSON-dokumentet, som det blev indsat i kolonnen, før eventuelle delvise opdateringer, der måtte være blevet udført på det efterfølgende.

Når argumentet er en streng, returnerer funktionen mængden af ​​lagerplads i den binære JSON-repræsentation, der oprettes ved at parse strengen som JSON og konvertere den til binær.

Syntaks

Syntaksen ser sådan ud:

JSON_STORAGE_SIZE(json_val)

Hvor json_val er det JSON-dokument, som lagerstørrelsen skal returneres for. Dette skal være et gyldigt JSON-dokument eller en streng, der kan parses som én.

Eksempel 1 – Grundlæggende brug

Her er et eksempel til at demonstrere.

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

Resultat:

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

I dette tilfælde er dokumentstørrelsen 13 bytes.

Her er et lidt større JSON-dokument.

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

Resultat:

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

Så denne er 29 bytes.

Og her er en større igen.

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

Resultat:

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

Eksempel 2 – Databasekolonner

Her er et eksempel på at få lagerstørrelsen for et JSON-dokument, der er gemt i en databasekolonne.

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

Resultat:

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

I dette tilfælde var databasekolonnen en JSON-kolonne, og den indeholder følgende 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 dette tilfælde brugte jeg JSON_PRETTY() funktion for at gøre resultaterne mere læsbare.


  1. Sådan kalder du en lagret procedure i JDBC

  2. Sådan begrænser du rækker i et SQL Server-resultatsæt

  3. Hvordan nulstiller jeg SqLite-databasen i Android?

  4. Hvordan indsætter man en post med kun standardværdier?