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

JSON_CONTAINS_PATH()MySQLの例

    MySQLでは、JSON_CONTAINS_PATH() 関数は、指定されたパスが指定されたJSONドキュメントにあるかどうかをテストします。

    パスが見つかった場合は、JSON_CONTAINS_PATH() 1を返します 、それ以外の場合は、0を返します 。

    構文

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

    JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...)
    

    json_docの場所 JSONドキュメント、one_or_all キーワードone またはall1を返す前に、パスが1つだけ存在する必要があるのか​​、すべてのパスが存在する必要があるのか​​を示すため )、およびpath 実際のパスです。

    例1-基本的な使用法

    基本的な使用法を示す例を次に示します。

    SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
    SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.a') AS Result;
    

    結果:

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

    パス$.a JSONドキュメントに存在するため、結果は1になります。 。 oneを使用しました 2番目の引数としてですが、この場合、allを指定した場合、同じ結果が得られます。 。

    SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
    SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.a') AS Result;
    

    結果:

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

    存在しないパスを指定すると、0になります。 。例:

    SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
    SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.z') AS Result;
    

    結果:

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

    例2–複数のパス

    次の例では、2つのパスを指定します。

    最初の例では、一方のパスは存在しますが、もう一方は存在しません。しかし、私はoneを使用しているので 2番目の引数として、結果は正です(少なくとも1つのパスが存在するため)。

    SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
    SELECT JSON_CONTAINS_PATH(@doc, 'one', '$.a', '$.z') AS Result;
    

    結果:

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

    oneを切り替えると all 否定的な結果が得られます。

    SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
    SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.a', '$.z') AS Result;
    

    結果:

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

    これは、allが原因です キーワードでは、1を返す前に、すべてのパスがJSONドキュメントに存在する必要があります 。

    例3–ドット表記

    ドット表記を使用して、JSONドキュメント内の特定のパスを示すことができます。

    SET @doc = '{"a": 1, "b": 2, "c": {"d": 3}}';
    SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c.d') AS Result;
    

    結果:

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

    例4–アレイ

    アレイの例をいくつか示します。

    最初の例は肯定的な結果を返します。

    SET @doc = '{"a": 1, "b": 2, "c": [3, 4, 5]}';
    SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c[0]') AS Result;
    

    結果:

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

    次の例は否定的な結果を返します。

    SET @doc = '{"a": 1, "b": 2, "c": [3, 4, 5]}';
    SELECT JSON_CONTAINS_PATH(@doc, 'all', '$.c[3]') AS Result;
    

    結果:

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

    配列はゼロベースの番号付けを使用するため、これは負の値を返します。したがって、パス$.c[3] 4番目の要素を表しますが、配列には3つの要素しか含まれていません。


    1. 列のないSELECTが有効なのはなぜですか

    2. ヒストグラムの粗い配置を使用したSQLServerの結合推定

    3. PostgreSQL-エラー:列の日付を型の日付にキャストできません

    4. OracleRACのGWFG