2010-07-27 10 views
13

मेरे पास एक टैग सिस्टम में उपयोग किए जाने वाले बहुत से शब्दों वाला डेटाबेस है। मैंने एक स्वत: पूर्ण बॉक्स के लिए आवश्यक कोड बनाया है, लेकिन मुझे यकीन नहीं है कि डेटाबेस से मिलान करने वाली प्रविष्टियों को सबसे कुशल तरीके से कैसे लाया जाए।किसी SQL सर्वर डेटाबेस से दिए गए स्ट्रिंग से शुरू होने वाली प्रविष्टियों को कैसे प्राप्त करें?

मुझे LIKE कमांड के बारे में पता है, लेकिन ऐसा लगता है कि यह एक इक्वाल कमांड है। मुझे केवल वे शब्द मिलते हैं जो वास्तव में मेरे द्वारा दर्ज किए गए शब्द की तरह दिखते हैं।

मेरी योजना हर पंक्ति को पढ़ने के लिए है, और उसके बाद सी # की स्ट्रिंग का उपयोग करें। स्टार्ट्सविथ() और स्ट्रिंग। फिटनेस() फ़ंक्शन को फिट करने वाले शब्दों को ढूंढने के लिए, लेकिन मैं सोच रहा हूं कि एक बड़े डेटाबेस के साथ, यह अक्षम हो सकता है प्रत्येक पंक्ति को पढ़ें और फिर उन्हें फ़िल्टर करें।

क्या केवल पंक्तियों को पढ़ने का कोई तरीका है जो SQL सर्वर से किसी दिए गए स्ट्रिंग के साथ शुरू होता है या इसमें होता है?

उत्तर

29

जैसे उपयोग करते समय, आप वाइल्डकार्ड के रूप में% साइन प्रदान करते हैं। यदि आप हैलो से शुरू होने वाले तारों को चाहते हैं, तो आप LIKE 'हैलो%' का उपयोग करेंगे यदि आप स्ट्रिंग में कहीं भी हैलो के साथ तार चाहते थे, तो आप LIKE '% Hello%'

दक्षता के रूप में, पसंद का उपयोग करने योग्य नहीं है । आपको पूर्ण पाठ खोज में देखना चाहिए।

+0

मुझे वास्तव में% चिह्न के बारे में पता था। मेरा मूर्ख मैं भी पूरी पाठ खोज में देखूंगा। धन्यवाद! –

2

आप टी-एसक्यूएल में CONTAINS का उपयोग कर सकते हैं, लेकिन मुझे पूरा यकीन है कि आपको अपनी क्वेरी में शामिल तालिका के लिए पूर्ण-पाठ अनुक्रमणिका का उपयोग करना होगा।

Contains

Getting started with Full-Text Search

8

मुझे पसंद है आदेश के बारे में पता है, लेकिन मुझे लगता है कि यह एक समान आदेश के अधिक है। मुझे केवल वे शब्द मिलते हैं जो वास्तव में मेरे द्वारा दर्ज किए गए शब्द की तरह दिखते हैं।

ऐसा इसलिए है क्योंकि आप वाइल्डकार्ड का उपयोग नहीं कर रहे है:

WHERE column LIKE 'abc%' 

... पंक्तियों वापस आ जाएगी जहां column मूल्य "abc" के साथ शुरू होता है। मैं इंगित करूंगा कि वाइल्डकार्ड का उपयोग करते समय, यह एकमात्र संस्करण है जो column ... er कॉलम पर एक इंडेक्स का उपयोग कर सकता है।

WHERE column LIKE '%abc%' 

... पंक्तियों जहां column मूल्य "abc" यह कहीं शामिल वापस आ जाएगी। एक LIKE की बाएं तरफ वाइल्डकार्ड गारंटी देता है कि एक सूचकांक का उपयोग नहीं किया जा सकता है।

SQL सर्वर नियमित रूप से नियमित अभिव्यक्तियों का समर्थन नहीं करता है - आपको कार्यक्षमता तक पहुंच प्राप्त करने के लिए सीएलआर फ़ंक्शंस का उपयोग करना होगा। लेकिन यह पसंद के साथ बराबर प्रदर्शन करता है।

पूर्ण पाठ खोज (एफटीएस) टेक्स्ट खोजने का सबसे अच्छा माध्यम है।

+0

यदि आप जो खोजते हैं वह अंडरस्कोर कैरेक्टर है, तो आपको इसे से बचने की ज़रूरत है: कॉलम की तरह '_ _' 'ESCAPE'/' – Tommy

2

तुम भी निम्नलिखित बयानों का उपयोग कर एक StartWith कार्यक्षमता को लागू कर सकते हैं:

उपयोग एक जो सबसे अच्छा प्रदर्शन करती है।

संबंधित मुद्दे