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

MySQL 8.*

MySQL 8 के बाद से आप <का उपयोग कर सकते हैं कोड>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. MySQL में एक टेबल का नाम बदलें

  2. Php/mysql में SO के समान टैगिंग सिस्टम को कैसे कार्यान्वित करें?

  3. हाइबरनेट और अपाचे डीबीसीपी का उपयोग करके MySQL के साथ कनेक्शन पूल समस्या

  4. mysql त्रुटि:प्रति घंटे अधिकतम कनेक्शन को पार कर गया

  5. एक विंडोज़ 2008 सर्वर r2 पर mysqltuner.pl