Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

अल्पविराम से अलग स्ट्रिंग के विरुद्ध अल्पविराम से अलग स्ट्रिंग से मेल खाने के लिए SQL क्वेरी?

एक ही विधेय में किसी अन्य अल्पविराम से अलग स्ट्रिंग में किसी भी मान के विरुद्ध अल्पविराम से अलग स्ट्रिंग में किसी भी मूल्य से मेल खाना व्यावहारिक नहीं है।

आप FIND_IN_SET()<का उपयोग कर सकते हैं /ए> एक समय में एक मान की खोज करने के लिए।

इसका मतलब है कि आपको अपने इनपुट $subsector_text को विभाजित करके प्राप्त होने वाले प्रत्येक मान के लिए एक से अधिक विधेय की आवश्यकता है . तो अपने चर को विभाजित करें और इसे FIND_IN_SET() कॉल की श्रृंखला में मैप करें।

मैंने निम्नलिखित कोड का परीक्षण नहीं किया है, लेकिन इससे आपको पता चल जाएगा कि मैं किस बारे में बात कर रहा हूं:

$subsector_array = array_map('intval', explode(',', $subsector_text));
$subsector_terms = array_map(
  function ($id) { return "FIND_IN_SET($id, a.subsector)"; },
  $subsector_array);
$subsector_expr = implode(' OR ', $subsector_terms);

$sql = "
SELECT ...
          WHERE a.state = 1 
            AND a.sector = '$sector'
            AND ($subsector_expr)
...";

यह निश्चित रूप से एक टेबल-स्कैन को मजबूर करेगा क्योंकि FIND_IN_SET (), या किसी अन्य ऑपरेशन को इंडेक्स करने का कोई तरीका नहीं है जो सबस्ट्रिंग की खोज करता है। ठीक है, मुझे लगता है कि a.state . पर आपकी शर्तें और a.sector FIND_IN_SET() शर्तों को लागू करने से पहले खोज को कम करने के लिए एक इंडेक्स का उपयोग करेगा।

मैं उस प्रणाली के साथ काम करने की दुविधा को समझता हूं जो आपको विरासत में मिली है। अपने प्रबंधक को बताएं कि इसे किसी बिंदु पर पुन:सक्रिय करने की आवश्यकता है, क्योंकि यह कभी भी कुशल या विश्वसनीय नहीं होगा जिस तरह से इसे अभी डिज़ाइन किया गया है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पंक्ति दोहराने के लिए रिक्त पंक्ति बनाना

  2. खोजे जाने वाले कई क्षेत्रों वाली तालिका को ठीक से अनुक्रमित करने के लिए सलाह की आवश्यकता है

  3. अजगर में विशाल MySQL तालिका को पढ़ने का सबसे तेज़ तरीका

  4. चेक बॉक्स द्वारा डेटा का चयन करें अगला क्लिक करें और चयनित पंक्ति को अचयनित करें

  5. डोमेन स्वामित्व कैसे सत्यापित करें