P粉8271215582023-08-28 13:36:44
JSON に非正規化するのは良い考えではないのは事実ですが、場合によっては JSON データを処理する必要があり、JSON 配列をクエリ内の行に抽出する方法があります。
コツは、一時テーブルまたはインライン インデックス テーブルで結合を実行することです。これにより、JSON 配列内の null 以外の値ごとに行が得られます。つまり、値 0、1、および 2 を持つテーブルがあり、それを 2 つのエントリを含む JSON 配列「fish」に結合すると、Fish[0] は 0 と一致し、行が生成され、Fish になります。 1 は 1 に一致し、2 行目になりますが、fish[2] は null であるため、2 に一致せず、結合に行は生成されません。インデックス テーブルには、JSON データ内の配列の最大長と同じ数の数値が必要です。これはちょっとしたハックで、OP の例と同じくらい面倒ですが、非常に便利です。
例 (MySQL 5.7.8 以降が必要):
リーリー ###消す:### リーリー MySQL チームは、これを簡単にするために、MySQL 8 にJSON_TABLE 関数を追加しているようです。 ( を追加しました ## JSON_TABLE 関数。)http://mysqlserverteam.com/mysql-8-0-labs -json-aggregation-functions/
) (MySQL チームは
P粉4038048442023-08-28 09:32:06
MySQL 8 で JSON_TABLE を使用する方法は次のとおりです:
リーリーまた、区切り文字で区切られた文字列を取得して JSON 文字列に変換することで、MySQL にはない汎用の文字列分割関数 (PG の regexp_split_to_table や MSSQL の STRING_SPLIT と同様) として使用することもできます。 リーリー