翻訳ページ
このページは AI の支援を受けて英語から翻訳されています。内容が異なる場合は英語版が正となります。
JSON_EXTRACT
整形式の JSON オブジェクトまたは配列から 1 つ以上の値を返します。
関連項目:
[SELECT] [DESCRIBE] [JSON_ARRAY_LENGTH] [ データ型 ]
ヒント
注記
postgres SQL バックエンドで stackql を使用している場合、json_extract 関数は json_extract_path_text 関数として実装されます。
構文
SELECT JSON_EXTRACT(json_array_or_object, json_path[, json_path1, .. json_pathN])
FROM <multipartIdentifier>;
引数
json_array_or_object
JSON 配列またはオブジェクト。
json_path
json_array_or_object に含まれる配列またはオブジェクトへの JSON パス。jsonpath.com を参照してください。
json_path を 1 つ指定した場合は、解決されたパスのデータ型に対応するスカラー値が返されます。
複数の json_path 引数を指定した場合、結果は各パスで解決されたオブジェクトで構成される配列になります。
json_path 引数に
'$'を指定すると、json_array_or_object 引数が表す列に対応する JSON オブジェクト全体が返されます。
注記:
json-viewerなどのツールを使用して、JSON Path 式を作成およびテストできます。
戻り値
入力として指定した json_array_or_object と json_path に応じて、文字列、整数、オブジェクト、配列、ブール値、または null。
例
各 Google Compute Engine インスタンスに関連付けられたディスクオブジェクトを返す
SELECT name, json_extract(disks, '$') as disks
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
各 Google Compute Engine インスタンスにアタッチされた最初のディスクのデバイス名とサイズを返す
SELECT name, json_extract(disks, '$[0].deviceName') as device_name,
json_extract(disks, '$[0].diskSizeGb') as disk_size
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
各 Google Compute Engine インスタンスにアタッチされた最初の NIC のネットワーク階層を返す
SELECT name, json_extract(networkInterfaces, '$[0].accessConfigs[0].networkTier') as network_tier
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
各 Google Compute Engine インスタンスに関連付けられた最初のサービスアカウントのスコープの一覧を返す
SELECT name, json_extract(serviceAccounts, '$[0].scopes') as scopes
FROM google.compute.instances
WHERE project = 'stackql-demo'
AND zone = 'australia-southeast1-a';
/* returns a list for each service account */
詳細については、https://www.sqlite.org/json1.html#jex を参照してください。