MariaDB
 sql >> база данни >  >> RDS >> MariaDB

MariaDB JSON_DETAILED() Обяснено

В MariaDB, JSON_DETAILED() е вградена функция, която приема JSON документ и го връща в по-четим от човека формат.

Това понякога се нарича претифициране на документа. Той е подобен на JSON_PRETTY() на MySQL функция.

За обратния ефект (т.е. за уплътняване на JSON документ надолу), използвайте JSON_COMPACT() функция.

Синтаксис

Синтаксисът е така:

JSON_DETAILED(json_doc[, tab_size])

Където json_doc е JSON документът и tab_size е незадължителна стойност, която определя размера на раздела/отстъпите.

Пример

Ето пример за демонстрация.

SET @json_document = '{ "name": "Wag", "type": "Dog", "weight": 20 }';

SELECT JSON_DETAILED(@json_document);

Резултат:

+----------------------------------------+
| JSON_DETAILED(@json_document)          |
+----------------------------------------+
| {
    "name": "Wag",
    "type": "Dog",
    "weight": 20
} |
+----------------------------------------+

Оригиналният документ е на един ред, без табулации/отстъпи или друго форматиране.

Резултатът е разпределен на няколко реда и съдържа табулатори/отстъпи, което прави документа по-лесен за четене от нас, хората.

Вложени структури

Ето още няколко примера, този път с вложени структури:

SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';

SELECT JSON_DETAILED(@json_document);

Резултат:

+---------------------------------------+
| JSON_DETAILED(@json_document)         |
+---------------------------------------+
| {
    "_id": 1,
    "awards": 
    [
        "Top Dog",
        "Best Dog",
        "Biggest Dog"
    ]
} |
+---------------------------------------+

И още едно:

SET @json_document = '{ "_id" : 2, "specs" : { "height" : 400, "weight" : 15, "color" : "brown" } }';

SELECT JSON_DETAILED(@json_document);

Резултат:

+---------------------------------------+
| JSON_DETAILED(@json_document)         |
+---------------------------------------+
| {
    "_id": 2,
    "specs": 
    {
        "height": 400,
        "weight": 15,
        "color": "brown"
    }
} |
+---------------------------------------+

Размер на раздел

Освен това имате възможност да посочите размера на раздела. За да направите това, предайте желания размер на раздела като втори аргумент.

Пример

SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';

SELECT JSON_DETAILED(@json_document, 1);

Резултат:

{
 "_id": 1,
 "awards": 
 [
  "Top Dog",
  "Best Dog",
  "Biggest Dog"
 ]
}

И ето го отново, но с по-голям размер на раздела:

SET @json_document = '{ "_id" : 1, "awards" : [ "Top Dog", "Best Dog", "Biggest Dog" ] }';

SELECT JSON_DETAILED(@json_document, 10);

Резултат:

{
 "_id": 1,
 "awards": 
 [
  "Top Dog",
  "Best Dog",
  "Biggest Dog"
 ]
}

По-голям JSON документ

Ето пример с малко по-голям JSON документ.

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_DETAILED(@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"
        }
    }
}

Нулев аргумент

Ако аргументът е NULL , резултатът е NULL :

SELECT JSON_DETAILED(null);

Резултат:

+---------------------+
| JSON_DETAILED(null) |
+---------------------+
| NULL                |
+---------------------+

Неправилен брой параметри

Предоставянето на без аргументи води до грешка:

SELECT JSON_DETAILED();

Резултат:

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

Същото е, когато предоставите твърде много аргументи:

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

Резултат:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB FLOOR() срещу TRUNCATE()

  2. MariaDB LTRIM() срещу LTRIM_ORACLE():Каква е разликата?

  3. Ръководство за автоматизирано внедряване на облачни бази данни

  4. Намерете всички нечислови стойности в колона в MariaDB

  5. Преглед на MariaDB Xpand (бивш ClustrixDB)