sql >> データベース >  >> RDS >> Mysql

MySQLとJSON-配列を行に変換

    配列を行に変換する3つの方法があります。同じ想定JSON値を使用する:

    SET @j = '[10, 20, {"a": "bbb"}]';

    数値のインラインテーブルを使用します。 MySQLとMariaDBの互換性:

    WITH sequenceGenerator (sequenceNumber) AS (
        SELECT 0 AS sequenceNumber
        UNION ALL
        SELECT 1
        UNION ALL
        SELECT 2
    )
    SELECT
        JSON_EXTRACT(@j, CONCAT('$[', sequenceNumber, ']')) AS arrayValue
    FROM
        sequenceGenerator;
    

    MySQL 8.0.4+ JSON_TABLE()の使用:

    SELECT
        arrayValue
    FROM
        JSON_TABLE(
            @j,
             '$[*]'
            COLUMNS(
                arrayValue JSON PATH '$')
        ) AS tt;
    

    MariaDB SEQUENCEエンジンを使用してインラインシーケンステーブルを削除します:

    SELECT
        JSON_EXTRACT(@j, CONCAT('$[', seq, ']')) AS arrayValue
    FROM
        seq_0_to_2;
    

    MariaDBでより一般的にするには、配列の長さに「最良の推測」の最大値を使用してから、シーケンスをJSONの長さに制限します。この例では、最大の配列の要素が1024以下であると想定しています。

    SELECT
        JSON_EXTRACT(@j, CONCAT('$[', seq, ']')) AS arrayValue
    FROM
        seq_0_to_1024 AS sequenceTable
    WHERE
        sequenceTable.seq < JSON_LENGTH(@j);
    



    1. SQLDeveloperで変数の値を出力する

    2. PHP:optgroupを使用した動的ドロップダウン

    3. MySQL IF NOT NULL、次に1を表示、それ以外の場合は0を表示

    4. PHPの他のクラスのクラスを適切に使用していますか?