翻訳ページ
このページは AI の支援を受けて英語から翻訳されています。内容が異なる場合は英語版が正となります。
JSON_EACH
配列要素またはオブジェクトメンバーごとに 1 行を含むテーブルを返すテーブル値関数です。
関連項目:
[SELECT] [DESCRIBE] [JSON_EXTRACT] [JSON_ARRAY_LENGTH] [ データ型 ]
ヒント
DESCRIBE 関数を使用すると、json_each 関数で使用できる array データ型を確認できます。
注記
postgres SQL バックエンドで stackql を使用している場合、json_each 関数は json_array_elements_text 関数として実装されます。
構文
SELECT <alias>.<projectedField>, ... , json_each.value
FROM <multipartIdentifier> <alias>, JSON_EACH(json_array_or_object, json_path);
引数
json_array_or_object
JSON 配列またはオブジェクト。
json_path
json_array_or_object に含まれる配列またはオブジェクトへの JSON パス。jsonpath.com を参照してください。
json_path が json_array_or_object に存在しない場合、関数は
NULLを返します。
いずれかの引数が整形式でない場合、
json_type()関数はエラーを発生させます。
戻り値
配列要素またはオブジェクトメンバーごとに 1 行を含むテーブル。
例
文字列の配列を関連フィールドと結合したテーブルに展開する
前提として:
describe google.cloudresourcemanager.projects_iam_policies;
このクエリは次の結果を返します:
|-----------|--------|
| name | type |
|-----------|--------|
| condition | object |
|-----------|--------|
| members | array |
|-----------|--------|
| role | string |
|-----------|--------|
次の stackql クエリは、json_each 関数を使用して members 配列をテーブルに展開し、role フィールドと、必要に応じて condition フィールドと結合します。
select
iam.role,
SPLIT_PART(json_each.value, ':', 2) as member
from google.cloudresourcemanager.projects_iam_policies iam, json_each(members)
where projectsId = 'stackql';
次のような結果が返されます:
|--------------------------------------|-------------------------------------------------------|
| role | member |
|--------------------------------------|-------------------------------------------------------|
| roles/cloudbuild.builds.builder | 1234567890@cloudbuild.gserviceaccount.com |
|--------------------------------------|---------------------------------------------- --------|
| roles/editor | 1234567890-compute@developer.gserviceaccount.com |
|--------------------------------------|-------------------------------------------------------|
| roles/editor | 1234567890@cloudservices.gserviceaccount.com |
|--------------------------------------|-------------------------------------------------------|
| roles/editor | stackql@appspot.gserviceaccount.com |
|--------------------------------------|-------------------------------------------------------|
| ... | ... |
|--------------------------------------|-------------------------------------------------------|
詳細については、https://www.sqlite.org/json1.html#jeach を参照してください。