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

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

अल्पकालिक समाधान

FIND_IN_SET फ़ंक्शन :

WHERE FIND_IN_SET('Queensland', csv_column)

... क्योंकि किसी भी छोर पर वाइल्डकार्ड के साथ LIKE का उपयोग करना जोखिम भरा है, यह इस बात पर निर्भर करता है कि कितने/छोटे मैच (और यह एक टेबल स्कैन भी सुनिश्चित करता है)। दोनों तरफ वाइल्डकार्ड के साथ LIKE का प्रदर्शन REGEXP के बराबर है--इसका मतलब खराब है।

दीर्घकालिक समाधान

अल्पविराम द्वारा अलग किए गए मानों को संग्रहीत न करें -- तीन तालिकाओं को शामिल करते हुए उचित अनेक-से-अनेक संबंध का उपयोग करें:

चीजें

  • thing_id (प्राथमिक कुंजी)

ऑस्ट्रेलियाई राज्य

  • State_id (प्राथमिक कुंजी)
  • राज्य_नाम

Things_to_Auz_States

  • thing_id (प्राथमिक कुंजी, THINGS के लिए विदेशी कुंजी) टेबल)
  • State_id (प्राथमिक कुंजी, AUSTRALIAN_STATES के लिए विदेशी कुंजी) टेबल)

तीन तालिकाओं से डेटा प्राप्त करने के लिए आपको जॉइन की आवश्यकता होगी, लेकिन यदि आप यह जानना चाहते हैं कि कितने किसी विशेष राज्य या दो विशेष राज्यों से जुड़े हैं, तो यह उचित मॉडल है।



  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. MySQL में एक बहु-स्तंभ अनुक्रमणिका में स्तंभों का क्रम

  3. MySQL उपयोगकर्ता DB में पासवर्ड कॉलम नहीं हैं - OSX पर MySQL इंस्टॉल करना

  4. MySQL MyISAM तालिका प्रदर्शन समस्या पर दोबारा गौर किया गया

  5. php पढ़ रहा है mysql बिट फ़ील्ड अजीब चरित्र लौटा रहा है