ホームページ > データベース > mysql チュートリアル > MySQL で JSON 配列から特定のキー値を効率的に抽出する方法

MySQL で JSON 配列から特定のキー値を効率的に抽出する方法

Susan Sarandon
リリース: 2024-10-29 13:43:02
オリジナル
539 人が閲覧しました

How to Efficiently Extract Specific Key Values from JSON Arrays in MySQL?

MySQL JSON 配列での特定のキー値の検索

MySQL では、JSON オブジェクトの配列内で特定のノードを見つけるのが難しい場合があります。これに対処するには、JSON_SEARCH 関数と JSON_CONTAINS 関数の利用を検討してください。ただし、これらの関数を組み合わせてクエリを簡素化することが常に実現できるわけではありません。

MySQL 8.0 は、JSON_TABLE() 関数を使用したソリューションを提供します。この関数は、JSON ドキュメントから仮想派生テーブルを作成し、それを行と列として効果的に扱います。 。これにより、JSON データに対して選択や射影などの操作を実行できるようになります。

デモとして、サンプル データをテーブルに挿入してみましょう。

<code class="sql">create table mytable ( mycol json );

insert into mytable set mycol = '[{"Race": "Orc", "strength": 14}, {"Race": "Knight", "strength": 7}]';</code>
ログイン後にコピー

JSON_TABLE() を使用して、次のことができるようになりました。仮想テーブルを作成します:

<code class="sql">SELECT j.*
FROM mytable,
JSON_TABLE(mycol, '$[*]' COLUMNS (
    race VARCHAR(10) PATH '$.Race',
    strength INT PATH '$.strength'
)) AS j;</code>
ログイン後にコピー

これにより、次の結果が生成されます:

race strength
Orc 14
Knight 7

特定の種族の強さを取得するには、WHERE 句を使用できます:

<code class="sql">SELECT j.strength
FROM mytable,
JSON_TABLE(mycol, '$[*]' COLUMNS (
    race VARCHAR(10) PATH '$.Race',
    strength INT PATH '$.strength'
)) AS j
WHERE j.race = 'Orc';</code>
ログイン後にコピー

これにより、次の結果が返されます:

strength
14

ただし、このアプローチではクエリで属性フィールドを指定する必要があり、属性定義が不明なデータセットには適していない可能性があります。

以上がMySQL で JSON 配列から特定のキー値を効率的に抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート