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

MySQLフィルターJSON_CONTAINS配列からの任意の値

    MySQL 5.7.8以降では、 JSON_CONTAINS 個別の値ごとに:

    SELECT * 
    FROM   Schedule 
    WHERE  (   JSON_CONTAINS(Days, '1')
            OR JSON_CONTAINS(Days, '2')
            OR JSON_CONTAINS(Days, '6')
           )
    

    検索する値がPHP変数に格納されている場合(質問のように)、上記のSQLを次のように作成できます。

    $DaysVar = $_GET['Days'];
    $condition = implode(" OR ", array_map(function($day) {
        return "JSON_CONTAINS(Days, '$day')";
    }, $DaysVar));
    $sql = mysqli_query($db, "
        SELECT ScheduleID, 
               Days
        FROM   Schedule
        WHERE  ($condition)
    ");
    

    MySQL8。*

    MySQL 8以降では、<を使用できます。 code> JSON_OVERLAPS

    SELECT * 
    FROM   Schedule
    WHERE  JSON_OVERLAPS(Days, '$DaysVar')
    


    1. mysql-別のテーブルのオカレンスを自動的に更新します

    2. Pythonを使用して可変列名でSQLにアクセスする

    3. MySQLデータを使用して動的チャートを生成するにはどうすればよいですか?

    4. SQLクエリ