डेटाबेस में स्टोर करने के लिए अल्पविराम से अलग किए गए मानों का उपयोग करना कभी भी अच्छा नहीं होता है यदि यह संभव है तो उन्हें स्टोर करने के लिए अलग-अलग टेबल बनाने का प्रयास करें क्योंकि संभवतः यह 1:n
है। संबंध।
यदि यह संभव नहीं है, तो आप इसे निम्नलिखित संभावित तरीकों से कर सकते हैं, यदि आपके मिलान करने के लिए मूल्यों की संख्या समान रहने वाली है, तो आप Like
की श्रृंखला करना चाह सकते हैं। OR/AND
. के साथ स्टेटमेंट आपकी आवश्यकता के आधार पर।
उदा.-
WHERE
Media LIKE '%21%'
OR Media LIKE '%30%'
OR Media LIKE '%40%'
हालांकि उपरोक्त क्वेरी में 21
. वाले सभी मानों को पकड़ने की संभावना होगी तो भले ही 1210
. जैसे मानों वाले कॉलम हों ,210
भी वापस कर दिया जाएगा। इसे दूर करने के लिए आप निम्नलिखित ट्रिक कर सकते हैं जो प्रदर्शन में बाधा डालती है क्योंकि यह where
. में फ़ंक्शन का उपयोग करता है खंड और जो खोजने योग्य
प्रश्न। लेकिन यहाँ यह जाता है,
--Declare valueSearch variable first to value to match for you can do this for multiple values using multiple variables.
Declare @valueSearch = '21'
-- Then do the matching in where clause
WHERE
(',' + RTRIM(Media) + ',') LIKE '%,' + @valueSearch + ',%'
यदि मिलान किए जाने वाले मानों की संख्या में परिवर्तन होने वाला है तो आप पूर्ण पाठ अनुक्रमणिका
और आपको उसी के बारे में सोचना चाहिए। और यदि आप Fulltext Index
के बाद इसके साथ जाने का निर्णय लेते हैं आप जो चाहते हैं उसे पाने के लिए आप नीचे जैसा कर सकते हैं,
उदा.-
WHERE
CONTAINS(Media, '"21" OR "30" OR "40"')