ホームページ >データベース >mysql チュートリアル >MySQL で JSON 配列を行に変換し、GROUP_CONCAT() を使用するにはどうすればよいですか?

MySQL で JSON 配列を行に変換し、GROUP_CONCAT() を使用するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-26 06:39:10904ブラウズ

How Can I Convert JSON Arrays to Rows and Use GROUP_CONCAT() in MySQL?

MySQL での JSON 配列から行への変換

概要

MySQL での JSON 配列の操作JSON 操作関数を理解する必要があります。ただし、これらの配列を行に変換するとき、または配列に対して GROUP_CONCAT() などの操作を実行するときに問題が発生します。この記事では、このようなシナリオに対処し、MySQL の JSON 機能を使用したソリューションを提供します。

JSON 配列から行へ

JSON 配列の各要素に行を挿入するには、1 つの方法があります。 JSON_EXTRACT() を使用して各要素を手動で抽出し、結果を結合します。ただし、よりクリーンな方法は、MySQL 8 の JSON_TABLE 関数を利用することです。

SET @j = '[1, 2, 3]';
SELECT *
     FROM
       JSON_TABLE(
         @j,
         "$[*]"
         COLUMNS(
           Value INT PATH "$"
         )
       ) data;

これにより、JSON 配列の要素を含む 1 つの列「Value」を持つテーブルが作成されます。

JSON 配列の GROUP_CONCAT()

要素を連結するにはGROUP_CONCAT() を使用して JSON 配列をカンマ区切りの文字列に変換するには、JSON_TABLE と GROUP_CONCAT() を組み合わせて使用​​できます。

SELECT GROUP_CONCAT(Value)
     FROM
       JSON_TABLE(
         @j,
         "$[*]"
         COLUMNS(
           Value INT PATH "$"
         )
       ) data;

JSON 分割

カンマ区切り文字列の変換など、STRING_SPLIT() と同様のシナリオの場合行に変換するには、文字列を JSON 配列に変換することで JSON_TABLE を利用できます。

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

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

これにより、区切り文字列の要素を含む 1 つの列「Value」を持つテーブルが作成されます。

以上がMySQL で JSON 配列を行に変換し、GROUP_CONCAT() を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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