sql >> Databasteknik >  >> RDS >> MariaDB

MariaDB JSON_LOOSE() Förklarad

I MariaDB, JSON_LOOSE() är en inbyggd funktion som lägger till mellanslag i ett JSON-dokument för att göra det mer läsbart.

Det liknar JSON_DETAILED() funktion, förutom att den inte betonar kapslade strukturer på det sätt som JSON_DETAILED() gör.

Använd JSON_COMPACT() för motsatt effekt (d.v.s. att ta bort onödiga blanksteg) funktion.

Syntax

Syntaxen ser ut så här:

JSON_LOOSE(json_doc)

Där json_doc är JSON-dokumentet.

Exempel

Här är ett exempel att visa.

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

SELECT JSON_LOOSE(@json);

Resultat:

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

Originaldokumentet innehåller inga blanksteg, men resultatet av JSON_LOOSE() innehåller mellanslag..

Här jämförs det igen med originaldokumentet:

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"} |
+-----------------------------+--------------------------------+

Objekt och matriser

Här är ett exempel med ett objekt och en array, bara för att visa att det inte ger någon extra formatering för sådana 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]} |
+----------------------------------------------------+

Om du behöver extra formatering för dessa strukturer, prova JSON_DETAILED() funktion.

Nollargument

Om argumentet är NULL , resultatet är NULL :

SELECT JSON_LOOSE(null);

Resultat:

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

Felaktig parameterräkning

Att inte tillhandahålla några argument resulterar i ett fel:

SELECT JSON_LOOSE();

Resultat:

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

Det är samma sak när du ger för många argument:

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

Resultat:

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

  1. Vila dialekt för Oracle Database 11g?

  2. Varför får jag PLS-00302:komponent måste deklareras när den finns?

  3. Left Join returnerar inte alla rader

  4. Hur man hittar kolumnnamn för alla tabeller i alla databaser i SQL Server