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番目のアイテムを返します。