2013-04-26 7 views
16

मैं एक साधारण खोज एल्गोरिथ्म का निर्माण कर रहा हूँ और मैं रिक्त स्थान के साथ मेरी स्ट्रिंग को तोड़ने, और उस पर मेरी db खोज है, तो तरह करना चाहते हैं में एक से अधिक मान यह संभव है?एसक्यूएल खोज एक ही क्षेत्र

अग्रिम धन्यवाद

+0

का उपयोग UNION

$sql = ''; $count = 0; foreach($search as $text) { if($count > 0) $sql = $sql."UNION Select name From myTable WHERE Name LIKE '%$text%'"; else $sql = $sql."Select name From myTable WHERE Name LIKE '%$text%'"; $count++; } 

का उपयोग का प्रयास करें - यह संभव है और हर समय इस्तेमाल किया। यदि आपको प्रोग्रामर की आवश्यकता है तो आपके लिए कोड लिखने के लिए, इसके लिए कई वेबसाइटें हैं। उदाहरण के लिए लिंक्डइन। हालांकि, इस साइट के लिए, कृपया कोड के लिए लिखे जाने वाले अनुरोधों के विरोध के रूप में विशिष्ट कोड के बारे में प्रश्न पूछें। दिखाएं कि आपने क्या प्रयास किया है, और जो आपने पाया है ... आदि। – Dave

+0

धन्यवाद, मैं नहीं चाहता था कि मेरा कोड मेरे लिए लिखा जाए, बस यह जानना कि यह कैसे करना है। मेरा कोड उपरोक्त लिखे गए जैसा कुछ नहीं दिखता है। –

उत्तर

30

हाँ, आप एसक्यूएल IN ऑपरेटर कई पूर्ण मान खोज करने के लिए उपयोग कर सकते हैं:

SELECT name FROM products WHERE name IN ('Value1', 'Value2', ...); 

आप LIKE उपयोग करना चाहते हैं आप के बजाय OR उपयोग करने के लिए की आवश्यकता होगी:

SELECT name FROM products WHERE name LIKE '%Value1' OR name LIKE '%Value2'; 

AND (जैसा कि आपने कोशिश की) का उपयोग करकेका उपयोग करके सभी शर्तों को सत्य होने की आवश्यकता हैकम से कम एक को सत्य होने की आवश्यकता है।

+0

जब तक यह आपके प्रश्न का उत्तर देता है, तो आप हमारे समाधानों में से किसी एक से अधिक जटिल चाहते हैं, 'OR' खोज रहे हैं लेकिन सबसे प्रासंगिक (अधिकतर मिलान) परिणामों को प्रदर्शित करते हैं। –

+0

मैं SQL सर्वर का उपयोग कर रहा हूं और एक ही काम करने की कोशिश कर रहा हूं। हालांकि, मैं एक संग्रहित प्रक्रिया के पैरामीटर के रूप में खोज स्ट्रिंग को पास कर रहा हूं। मैं रिक्त स्थान के आधार पर खोज स्ट्रिंग पैरामीटर को कैसे तोड़ सकता हूं और फिर उपयोगकर्ता के खोज से पहले मानों को नहीं जानता, जहां "खंड"% Value1% या ..... "को सभी खंड जोड़ें? –

+0

मुझे सबसे सरल मामलों में यकीन है कि 'और' सही खोज है। यदि किसी उपयोगकर्ता ने किसी शब्द में टाइपिंग को परेशान किया है, तो संभवतः वे 90% समय के परिणाम में दिखाना चाहते हैं। Google खोज सोचें: [+ "बॉब" + "आशा"] जो 'OR' खोज के रूप में पूरी तरह बेकार होगी। और अर्ध-उपयोगी खोजों में पूरी तरह से हास्यास्पद उद्धरण आवश्यकताओं के लिए Google को क्षमा करें। साथ ही, 'AND' अद्वितीय कार्यक्षमता प्राप्त करना मुश्किल है, जबकि 'OR' आप केवल 2 खोज चला सकते हैं और देख सकते हैं कि कोई हिट हो जाता है या नहीं। – ebyrob

4

इस

बिल्कुल WHERE IN

$comma_separated = "('" . implode("','", $search) . "')"; // ('1','2','3') 
$sql = "Select name From myTable WHERE name IN ".$comma_separated ; 
संबंधित मुद्दे