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

JSONサブコンポーネントを抽出するための演算子

    SQLiteバージョン3.38.0(2022年2月22日にリリース)以降、->を使用できるようになりました。 および->> JSONドキュメントのサブコンポーネントを抽出する演算子。

    これらの演算子の目的は、同等のMySQLおよびPostgreSQL演算子と互換性を持たせることです。

    また、SQLite 3.38.0以降、JSON関数が組み込まれています。したがって、 -DSQLITE_ENABLE_JSON1を使用する必要はなくなりました。 JSONサポートを有効にするコンパイル時オプション。

    構文

    これらの演算子の動作は次のようになります:

    json -> path
    json ->> path

    json JSONドキュメントとpath そこから抽出したいパスです。

    そのため、オペレーターの左側にJSONドキュメントを提供し、その右側に抽出するパスを指定します。

    これらの演算子の違いは次のようになります:

    • -> 演算子は常に指定されたサブコンポーネントのJSON表現を返します
    • ->> 演算子は常に指定されたサブコンポーネントのSQL表現を返します

    ->の例 オペレーター

    ->の簡単な例を次に示します。 演算子は機能します:

    SELECT '{ "name" : "Wag", "type" : "Dog" }' -> '$';

    結果:

    {"name":"Wag","type":"Dog"}

    この場合、'$'のパスを指定しました ドキュメント全体を返します。

    別のパスを指定しましょう:

    SELECT '{ "name" : "Wag", "type" : "Dog" }' -> '$.type';

    結果:

    "Dog"

    次のようにすることもできます:

    SELECT '{ "name" : "Wag", "type" : "Dog" }' -> 'type';

    結果:

    "Dog"

    ->>の例 オペレーター

    ->>を使用すると次のようになります 代わりに:

    SELECT '{ "name" : "Wag", "type" : "Dog" }' ->> '$.type';

    結果:

    Dog

    値は以前のように引用されていません。 -> サブコンポーネントのJSON表現と->>を返します SQL表現を返します。

    ->> 演算子は、選択したサブコンポーネントを表すSQL TEXT、INTEGER、REAL、またはNULL値を返します。サブコンポーネントが存在しない場合は、NULLを返します。

    配列を使用した例を次に示します。

    SELECT '{ "scores" : [ 9, 7, 5 ] }' ->> '$.scores[2]';

    結果:

    5

    値が配列のみで構成されている場合は、次のように実行できます。

    SELECT '[ 9, 7, 5 ]' ->> '2';

    結果:

    5

    これにより、指定されたインデックス(この場合は2)の配列要素が返されます。

    配列はゼロベースです(カウントは 0から始まります )、それが 2の理由です 3番目のアイテムを返します。


    1. PL/pgSQL関数から不明な列を持つ動的テーブルを返します

    2. ライブMySQLクエリを表示するにはどうすればよいですか?

    3. NHibernateおよびSqlServerでのデータ監査

    4. PGConfIndia2017を楽しみにしています