sql >> Databasteknik >  >> RDS >> MariaDB

MariaDB JSON_COMPACT() Förklarad

I MariaDB, JSON_COMPACT() är en inbyggd funktion som tar bort alla onödiga mellanslag från ett JSON-dokument, så att det blir så kort och kompakt som möjligt, och returnerar resultatet.

Detta kan vara praktiskt när du behöver lagra JSON-data i en databaskolumn och du inte vill att JSON-dokumenten ska ta upp mer utrymme än vad som är nödvändigt.

Använd JSON_DETAILED() för att få motsatt effekt (dvs. för att försköna ett JSON-dokument genom att lägga till indrag och sprida det över flera rader). funktion.

Syntax

Syntaxen ser ut så här:

JSON_COMPACT(json_doc)

Där json_doc är JSON-dokumentet.

Exempel

Här är ett exempel att visa.

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

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

Resultat:

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

I det här fallet innehåller den första kolumnen den komprimerade versionen och den andra kolumnen innehåller det ursprungliga JSON-dokumentet innan det komprimerades.

Större JSON-dokument

Här är ett exempel med ett lite större, snyggt JSON-dokument.

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);

Resultat:

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

Nollargument

Om argumentet är NULL , resultatet är NULL :

SELECT JSON_COMPACT(null);

Resultat:

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

Felaktig parameterräkning

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

SELECT JSON_COMPACT();

Resultat:

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

Vi får samma resultat om vi ger för många argument:

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

Resultat:

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

  1. Ingen form av databascache för att minska dubbletter av databasfrågor.

  2. MIN() Funktion i PostgreSQL

  3. SQL Server använder hög CPU vid sökning i nvarchar-strängar

  4. Oracle SQL Injection Block med DBMS_ASSERT