एसक्यूएल में इसे संभालने का सही तरीका बहु-मूल्यवान संपत्ति के लिए एक और तालिका जोड़ना है। यह एक ही कॉलम में कई अलग-अलग मानों को स्टोर करने के लिए रिलेशनल मॉडल के खिलाफ है। चूंकि इसका इरादा नहीं-नहीं होना है, इसलिए SQL भाषा में इसके लिए बहुत कम समर्थन है।
अल्पविराम से अलग की गई सूची में दिए गए मान को खोजने का एकमात्र समाधान नियमित अभिव्यक्तियों का उपयोग करना है, जो सामान्य रूप से बदसूरत और धीमे होते हैं। आपको किनारे के मामलों से निपटना होगा जैसे कि जब कोई मान स्ट्रिंग के प्रारंभ या अंत में हो या न हो, साथ ही अल्पविराम के बगल में हो।
SELECT * FROM properties WHERE bedrooms RLIKE '[[:<:]]2[[:>:]]';
अन्य प्रकार के प्रश्न हैं जो सामान्य तालिका होने पर आसान होते हैं, लेकिन अल्पविराम से अलग की गई सूची के साथ कठिन होते हैं। खोज मानदंड के बराबर या उससे अधिक मान की खोज करने का आप जो उदाहरण देते हैं, वह ऐसा ही एक मामला है। इस पर भी विचार करें:
- मैं अल्पविराम से अलग की गई सूची से एक तत्व को कैसे हटाऊं?
- मैं कैसे सुनिश्चित करूं कि सूची क्रमबद्ध क्रम में है?
- कमरों की औसत संख्या क्या है?
- मैं कैसे सुनिश्चित करूं कि सूची में मान भी मान्य प्रविष्टियां हैं? उदा. मुझे "1,2, केला" में प्रवेश करने से रोकने के लिए क्या है?
यदि आप दूसरी तालिका नहीं बनाना चाहते हैं, तो एक मान के साथ अपने डेटा का प्रतिनिधित्व करने का एक तरीका लेकर आएं।
अधिक सटीक रूप से, मुझे यह कहना चाहिए कि मेरा सुझाव है कि आप अपने डेटा को प्रति कॉलम के एकल मान के साथ प्रस्तुत करें , और माइक एटलस का समाधान इसे पूरा करता है।