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

अल्पविराम से अलग किए गए स्तंभ मान में पोस्ट सरणी खोजें

समाधान 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 एक या . के साथ ऑपरेटर।




  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. दूरी क्वेरी के भीतर मैसकल

  3. SQL सर्वर में MySQL TIMESTAMP कॉलम के साथ कार्य करना

  4. नेटबीन को MySQL डेटाबेस से कैसे कनेक्ट करें?

  5. SQL में डेटा की एक पंक्ति को दूसरे से घटाना