sql >> Database teknologi >  >> RDS >> MariaDB

MariaDB JSON_LOOSE() Forklaret

I MariaDB, JSON_LOOSE() er en indbygget funktion, der tilføjer mellemrum til et JSON-dokument for at gøre det mere læsbart.

Det ligner JSON_DETAILED() funktion, bortset fra at den ikke understreger indlejrede strukturer på den måde, som JSON_DETAILED() gør.

For den modsatte effekt (dvs. at fjerne unødvendige mellemrum), skal du bruge JSON_COMPACT() funktion.

Syntaks

Syntaksen ser sådan ud:

JSON_LOOSE(json_doc)

Hvor json_doc er JSON-dokumentet.

Eksempel

Her er et eksempel til at demonstrere.

SET @json = '{"name":"Wag","type":"Dog"}';

SELECT JSON_LOOSE(@json);

Resultat:

+--------------------------------+
| JSON_LOOSE(@json)              |
+--------------------------------+
| {"name": "Wag", "type": "Dog"} |
+--------------------------------+

Det originale dokument indeholder ingen mellemrum, men resultatet af JSON_LOOSE() indeholder mellemrum..

Her sammenlignes det igen med det originale dokument:

SET @json = '{"name":"Wag","type":"Dog"}';

SELECT 
    @json AS 'Original',
    JSON_LOOSE(@json) AS 'Modified';

Resultat:

+-----------------------------+--------------------------------+
| Original                    | Modified                       |
+-----------------------------+--------------------------------+
| {"name":"Wag","type":"Dog"} | {"name": "Wag", "type": "Dog"} |
+-----------------------------+--------------------------------+

Objekter og arrays

Her er et eksempel med et objekt og et array, bare for at vise, at det ikke giver nogen ekstra formatering til sådanne strukturer.

SET @json = '{"specs":{"w":10,"h":30},"scores":[1,2,3]}';

SELECT JSON_LOOSE(@json);

Resultat:

+----------------------------------------------------+
| JSON_LOOSE(@json)                                  |
+----------------------------------------------------+
| {"specs": {"w": 10, "h": 30}, "scores": [1, 2, 3]} |
+----------------------------------------------------+

Hvis du har brug for ekstra formatering til disse strukturer, kan du prøve JSON_DETAILED() funktion.

Nul-argument

Hvis argumentet er NULL , resultatet er NULL :

SELECT JSON_LOOSE(null);

Resultat:

+------------------+
| JSON_LOOSE(null) |
+------------------+
| NULL             |
+------------------+

Forkert parameterantal

Angivelse af ingen argumenter resulterer i en fejl:

SELECT JSON_LOOSE();

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LOOSE'

Det er det samme, når du giver for mange argumenter:

SELECT JSON_LOOSE('{"a":1}', 2);

Resultat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_LOOSE'

  1. Opbygning af en meget tilgængelig database til Moodle ved hjælp af MySQL-replikering

  2. SQL Truncate

  3. CURRENT_TIME Eksempler – MySQL

  4. MyBatis Indsæt listeværdier