sql >> Database >  >> RDS >> MariaDB

MariaDB JSON_COMPACT() uitgelegd

In MariaDB, JSON_COMPACT() is een ingebouwde functie die alle onnodige spaties uit een JSON-document verwijdert, zodat het zo kort en compact mogelijk is, en het resultaat retourneert.

Dit kan handig zijn wanneer u JSON-gegevens in een databasekolom moet opslaan en u niet wilt dat de JSON-documenten meer ruimte in beslag nemen dan nodig is.

Voor het tegenovergestelde effect (d.w.z. om een ​​JSON-document mooier te maken door inspringingen toe te voegen en het over meerdere regels te spreiden), gebruikt u de JSON_DETAILED() functie.

Syntaxis

De syntaxis gaat als volgt:

JSON_COMPACT(json_doc)

Waar json_doc is het JSON-document.

Voorbeeld

Hier is een voorbeeld om te demonstreren.

SET @json_document = '{"a": [0, 1], "b": [2, 3]}';

SELECT 
    JSON_COMPACT(@json_document) AS Compact,
    @json_document AS Original;

Resultaat:

+-----------------------+----------------------------+
| Compact               | Original                   |
+-----------------------+----------------------------+
| {"a":[0,1],"b":[2,3]} | {"a": [0, 1], "b": [2, 3]} |
+-----------------------+----------------------------+

In dit geval bevat de eerste kolom de gecomprimeerde versie en de tweede kolom het originele JSON-document voordat het werd gecomprimeerd.

Groter JSON-document

Hier is een voorbeeld met een iets groter, mooier JSON-document.

SET @json_document = '{ 
        "_id" : 1, 
        "name" : "Wag", 
        "details" : {
            "type" : "Dog", 
            "weight" : 20,
            "awards" : { 
                "Florida Dog Awards" : "Top Dog", 
                "New York Marathon" : "Fastest Dog", 
                "Sumo 2020" : "Biggest Dog"
            }
        }
    }';
SELECT JSON_COMPACT(@json_document);

Resultaat:

{"_id":1,"name":"Wag","details":{"type":"Dog","weight":20,"awards":{"Florida Dog Awards":"Top Dog","New York Marathon":"Fastest Dog","Sumo 2020":"Biggest Dog"}}}

Nullargumenten

Als het argument NULL is , het resultaat is NULL :

SELECT JSON_COMPACT(null);

Resultaat:

+--------------------+
| JSON_COMPACT(null) |
+--------------------+
| NULL               |
+--------------------+

Onjuist aantal parameters

Het verstrekken van geen argumenten resulteert in een fout:

SELECT JSON_COMPACT();

Resultaat:

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

We krijgen hetzelfde resultaat als we te veel argumenten geven:

SELECT JSON_COMPACT('{ "a": 1}', '{ "b": 1 }');

Resultaat:

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

  1. Tabellen weergeven in MySQL en MariaDB

  2. Datum (jjjj/mm/dd) extraheren uit een tijdstempel in PostgreSQL

  3. Hoe het totale aantal geretourneerde rijen opnemen in de resultatenset van de opdracht SELECT T-SQL?

  4. Slechte gewoonten:rijen tellen op de harde manier