Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Filter MySQL JSON_CONTAINS Nilai apa pun dari Array

Di MySQL 5.7.8+ Anda dapat melakukan JSON_CONTAINS untuk setiap nilai terpisah:

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

Ketika nilai yang akan dicari disimpan dalam variabel PHP -- seperti dalam pertanyaan Anda -- maka Anda dapat membuat SQL di atas seperti ini:

$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)
");

MySQL 8.*

Sejak MySQL 8 Anda dapat menggunakan JSON_OVERLAPS :

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara membuat beberapa halaman dengan dompdf

  2. Menghubungkan MySQL dengan Visual Studio C#

  3. Cara terbaik untuk menyimpan data XML dalam database MySQL, dengan beberapa persyaratan khusus

  4. Mengapa Anda tidak menggunakan CONCAT() untuk literal string statis?

  5. Mysql:Fungsi agregasi tidak berfungsi tanpa grup dengan