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

JSON_LENGTH()–MySQLでJSONドキュメントの長さを返します

    MySQLでは、JSON_LENGTH() 関数はJSONドキュメントの長さを返します。

    この関数を呼び出すときは、JSONドキュメントを引数として指定します。ドキュメント内の値の長さを返すパス引数を指定することもできます。

    構文

    構文は次のようになります:

    JSON_LENGTH(json_doc[, path])
    

    json_docの場所 深さを返すJSONドキュメントであり、path ドキュメント内の値の長さを返すために使用できるオプションの引数です。

    例1-空のオブジェクト

    これは、空のオブジェクトのみを含むJSONドキュメントです。

    SELECT JSON_LENGTH('{}') 'Result';
    

    結果:

    +--------+
    | Result |
    +--------+
    |      0 |
    +--------+
    

    例2–データを含むオブジェクト

    そして、データを追加するとどうなりますか。

    SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';
    

    結果:

    +--------+
    | Result |
    +--------+
    |      1 |
    +--------+
    

    これは1を返します オブジェクトに1つのメンバーが含まれているためです。 2番目のメンバーを追加すると、次のようになります。

    SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';
    

    結果:

    +--------+
    | Result |
    +--------+
    |      2 |
    +--------+
    

    例3–アレイ

    配列の長さは、配列に含まれる要素の数です。

    SELECT JSON_LENGTH('[1, 2, 3]') 'Result';
    

    結果:

    +--------+
    | Result |
    +--------+
    |      3 |
    +--------+
    

    これは、要素の1つに独自の配列(またはオブジェクト)が含まれている場合でも当てはまります。

    SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';
    

    結果:

    +--------+
    | Result |
    +--------+
    |      3 |
    +--------+
    

    例4–パス引数

    オプションのpathを提供できます ドキュメント内の指定されたパスの長さを返す引数。

    SET @data = '{  
        "Person": {    
           "Name": "Homer", 
           "Age": 39,
           "Hobbies": ["Eating", "Sleeping"]  
        }
     }';
    SELECT JSON_LENGTH(@data, '$.Person') 'Result';
    

    結果:

    +--------+
    | Result |
    +--------+
    |      3 |
    +--------+
    

    この場合、Personの長さを返します 3つのメンバーを含むオブジェクト。

    それらのメンバーの1つだけに絞り込むと(たとえば、Name メンバー)、これを取得します:

    SET @data = '{  
        "Person": {    
           "Name": "Homer", 
           "Age": 39,
           "Hobbies": ["Eating", "Sleeping"]  
        }
     }';
    SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';
    

    結果:

    +--------+
    | Result |
    +--------+
    |      1 |
    +--------+
    

    しかし、それをHobbiesに絞り込むと 配列、これを取得します:

    SET @data = '{  
        "Person": {    
           "Name": "Homer", 
           "Age": 39,
           "Hobbies": ["Eating", "Sleeping"]  
        }
     }';
    SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';
    

    結果:

    +--------+
    | Result |
    +--------+
    |      2 |
    +--------+
    

    1. MariaDBの日付と時刻の関数に使用される言語を設定します

    2. 指定された座標から5マイルの範囲にあるすべての建物を取得する

    3. DataReader値がnullでないかどうかを確認するにはどうすればよいですか?

    4. 巨大なテーブルからすべての行を読み取る方法は?