sql >> データベース >  >> RDS >> MariaDB

MariaDB JSON_DETAILED()の説明

    MariaDBでは、JSON_DETAILED() は、JSONドキュメントを受け取り、より人間が読める形式で返す組み込み関数です。

    これは、ドキュメントの美化と呼ばれることもあります。 MySQLのJSON_PRETTY()に似ています 機能。

    逆の効果(つまり、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
    } |
    +----------------------------------------+

    元のドキュメントはすべて1行で、タブやインデントなどの書式はありません。

    結果は複数の行にまたがり、タブ/インデントが含まれているため、人間がドキュメントを読みやすくなっています。

    ネストされた構造

    ここにさらにいくつかの例がありますが、今回はネストされた構造を使用しています:

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

    そしてもう1つ:

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

    タブサイズ

    タブサイズを指定するオプションもあります。これを行うには、2番目の引数として目的のタブサイズを渡します。

    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. Postgresqlでキャリッジリターンと新しい行を削除するにはどうすればよいですか?

    2. SQLDATEから月と年のみを取得する

    3. DATEDIFF_BIG()SQLServerの例

    4. プロジェクトリンクはWampServerでは機能しません