ホームページ >データベース >mysql チュートリアル >MySQL で JSON 配列から行を効率的に抽出するにはどうすればよいですか?

MySQL で JSON 配列から行を効率的に抽出するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-08 17:18:12563ブラウズ

How Can I Efficiently Extract Rows from JSON Arrays in MySQL?

MySQL での JSON 配列からの行の抽出

MySQL 5.7 では強力な JSON 関数が導入され、JSON データのシームレスな操作が可能になります。ただし、JSON 配列要素を行に抽出することは困難であることがわかっています。

問題

JSON 配列を行ベースの構造に変換することは、MySQL の障害のままです。オプションは、JSON_EXTRACT() を使用して個々の要素を手動で抽出するか、複数のクエリを結合することに限定されます。このアプローチは面倒でエラーが発生しやすくなります。

解決策: MySQL 8 と JSON_TABLE

MySQL 8 には、JSON データを操作するための包括的なソリューションである JSON_TABLE が導入されています。 JSON 配列をテーブル行に直接変換できます。

SELECT *
FROM
JSON_TABLE(
'[5, 6, 7]',
"$[*]"
COLUMNS(
Value INT PATH "$"
)
) data;

JSON_TABLE をユニバーサル スプリッターとして使用する

JSON_TABLE は、行抽出に加えて、多用途のスプリッターとしても機能します。文字列スプリッター。MySQL にはない機能です。区切り文字で区切られた文字列を JSON に変換すると、そのコンポーネントを簡単に分離できるようになります。

set @delimited = 'a,b,c';

SELECT *
FROM
JSON_TABLE(
CONCAT('["', REPLACE(@delimited, ',', '", "'), '"]'),
"$[*]"
COLUMNS(
Value varchar(50) PATH "$"
)
) data;

結論

JSON_TABLE は、MySQL ユーザーに JSON 変換の効率的なアプローチを提供します。配列を行に変換するため、複雑な結合や手動抽出が不要になります。また、便利な文字列分割ツールとしても機能し、MySQL の機能における顕著なギャップに対処します。

以上がMySQL で JSON 配列から行を効率的に抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。