SELECT文またはJSONメソッド(JSONExtract、JSONExtractValue、JSONExtractLargeValue、JSON_TABLE、JSON_SHRED_BATCH、および JSON_SHRED_BATCH_U)を使用して、データベースに格納されているJSON文書からJSONデータを抽出できます。
提案されたANSI SQL/JSON規格に準拠するために、これらの抽出メソッドは目的のパスに一致する1つの値を返します。JSONPath問合わせ文字列に次の要素のいずれかがある場合を除いて、最初に見つかった結果が返されます。
- 再帰下降演算子
- ワイルドカード
- 名前またはインデックス リスト
- インデックス スライス
- フィルタ
JSONExtractValueとJSONExtractLargeValueのメソッドは、単一のスカラー値またはJSON nullしか抽出しません。複数の値がJSONPath問合わせ式と一致すると、複数の結果が見つかったことを示す警告やエラー メッセージ文字列が返されます。
検索は、必ずしも文書全体を検索する必要がないように最適化されます。ただし、これは次のシナリオが可能であることを意味します。
- JSON妥当性検査を無効にする。
- 不正な形式のJSONデータを挿入する。例えば、次のように挿入します。{"name":"Cameron" 123456}
- JSON妥当性検査を有効にする。
- キー"name"の値を抽出する。
この場合、文書全体を検索し、不正な形式のデータに到達する前に結果が見つかったため、"Cameron"の正しい結果が返されます。検索中、結果を見つける前に不正な形式のデータが見つかった場合は、構文エラーが報告されます。