SELECT文を使用すると、JSON列からデータを抽出できます。
フィールド モードでは、JSONのメソッドの1つを使用してフィルタ処理される場合も含めて、SELECTの結果は常に文字列です。
文字列が必要とする形式ではない場合、それを表わす適切なデータ型に結果セットをキャストする必要があります。
非フィールド モードでは、クライアントにJSON型が返されます。
BSONまたはUBJSONとして格納されているJSON列からデータを取得すると、常にデータはテキスト形式に変換されます。
SELECT文のORDER BY句、HAVING句、またはGROUP BY句にJSON列を含めることはできません。
SELECT句またはWHERE句で、列参照またはJSON型に評価される式の最後にJSONエンティティ参照を追加できます。
SELECT文の設定の例
後の例で使用するテーブルを作成して、データを取り込みます。
CREATE TABLE my_table (eno INTEGER, edata JSON(100)); INSERT INTO my_table (1, NEW JSON('{"name" : "Cameron", "phoneNumber" : 8584852612}')); INSERT INTO my_table (2, NEW JSON('{"name" : "Justin", "phoneNumber" : 8584852611}')); SELECT edata FROM my_table;
結果:
'{"name" : "Justin", "phoneNumber" : 8584852611}' '{"name" : "Cameron", "phoneNumber" : 8584852612}'
例: SELECT文によるJSONデータの抽出
この例では、JSONExtractValueメソッドを使用して、名前がCameronのデータを抽出します。
SELECT eno, edata FROM my_table WHERE edata.JSONExtractValue('$.name') = 'Cameron' ORDER BY 1;
結果:
eno edata -------- 1 '{"name" : "Cameron", "phoneNumber" : 8584852612}'