Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Filtr MySQL JSON_CONTAINS Dowolna wartość z Array

W MySQL 5.7.8+ możesz wykonać JSON_CONTAINS dla każdej oddzielnej wartości:

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

Kiedy wartości do wyszukania są przechowywane w zmiennej PHP - jak w twoim pytaniu - możesz zbudować powyższy kod SQL w ten sposób:

$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.*

Od MySQL 8 możesz używać 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. hasło mysql psuje mój zrzut

  2. Jak mogę włączyć ścisły sql_mode w MySQL?

  3. Jak ustrukturyzować zapytanie SQL, aby znaleźć obiekt, który jest obiektem nadrzędnym dwóch określonych innych obiektów?

  4. Liczba Mysql liczba dopasowań regex na pole

  5. Jak wyświetlić obrazy przechowywane w bazie danych MySQL?