समाधान 1:
जैसा कि @ जेन्स ने टिप्पणी की, यह मूल्यों को सीएसवी के रूप में स्टोर करने के लिए एक खराब डीबी डिज़ाइन है। तो पहला समाधान आपके डीबी डिज़ाइन को बदलना होगा क्योंकि मुझे वास्तव में नहीं पता कि आप क्या स्टोर कर रहे हैं और आपके डीबी/कोड I का उद्देश्य क्या है कोई योजना नहीं लिख सकता या कोई सार्थक सुझाव नहीं दे सकता।
समाधान 2:
MySQL के find_in_set<का उपयोग करें /कोड>
समारोह।
SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)
समाधान 3:
आप LIKE
. का उपयोग कर सकते हैं ऑपरेटर। (कुछ सदस्य शायद मुझे यह सुझाव देने के लिए मार डालेंगे, लेकिन यदि आप अपना डीबी डिज़ाइन नहीं बदलना चाहते हैं - यह एक रचनात्मक विकल्प है)।
आइए निम्नलिखित कोड की जांच करें:
SELECT id FROM table WHERE filter_data LIKE '%2,%'
समस्या यह है कि यह 22,
. के साथ किसी फ़ील्ड की आईडी लौटाएगा filter_data के कॉलम में। इसलिए, आपको उस कॉलम के तहत डेटा बदलना होगा ताकि ,
पहले और आखिरी अक्षर के रूप में भी दिखाई देंगे। उदाहरण के लिए:
id | filter_data |
---|---------------
1 |,2,3,45,67,4, |
2 |,2,3,55,33,5,7,|
और अब आप निम्न कार्य कर सकते हैं:
SELECT id FROM table WHERE filter_data LIKE '%,2,%'
यदि आपके पास एकाधिक "खोज फ़िल्टर" हैं तो आप LIKE
. को जोड़ सकते हैं s एक या
. के साथ ऑपरेटर।