2013-02-21 126 views
6

क्या इसके लिए कोई छोटा सा हाथ है?
क्या कोई वाइल्डकार्ड है जो किसी भी या शून्य पर मेल खाता है?
एक और कहना था कि यह शून्य या एक से मेल खाता है।वाइल्डकार्ड एक या शून्य अक्षरों से मिलान करने के लिए

select [id], [word] from [FTSwordDef] 
where [word] like 'system_' 
    or [word] like 'system' 

उत्तर

3

हाँ, वहाँ एक छोटा रास्ता है, लेकिन यह संभावना sargable गैर आपकी क्वेरी बनाना होगा (जब तक यह पहले से ही ऐसा है):

WHERE word + ' ' LIKE 'system_' 

यह काम करता है क्योंकि LIKE की बाईं ओर किसी भी अतिरिक्त जगह है उपेक्षा, जबकि, यदि यह अतिरिक्त नहीं है यानी यदि यह दाएं तरफ के तर्क की लंबाई के भीतर है, तो यह किसी अन्य चरित्र की तरह पैटर्न स्ट्रिंग से मेल खाने में भाग लेता है।

तो, उदाहरण के लिए, निम्न में से सभी true परिणाम होगा:

(1) 'system ' LIKE 'system_' 
(2) 'systemA' LIKE 'system_' 
(3) 'systemA ' LIKE 'system_' 

(1), अंतरिक्ष पैटर्न स्ट्रिंग के _ मेल खाती है। में (2), यह A है जो _ से मेल खाता है। (3) में, यह भी A है जबकि अंतरिक्ष को नजरअंदाज कर दिया गया है।

यह वर्णन करने के लिए यहां एक अच्छा छोटा डेमो है: http://sqlfiddle.com/#!3/d41d8/9521

+0

मुझे इसका परीक्षण करने दें। – Paparazzi

+0

हाथ में समस्या के साथ मैं वास्तव में इसका उपयोग नहीं कर सकता लेकिन यह निर्दिष्ट प्रश्न का उत्तर है। – Paparazzi

-3

नहीं।

http://msdn.microsoft.com/en-us/library/ms179859.aspx

एक प्रतिशत चरित्र से काम नहीं चलेगा, तो आप एक या आवश्यकता होगी। यह खंड के लिए एक अतिरिक्त हिस्सा है, इसलिए हाँ यह कम साफ है, लेकिन पहली जगह LIKE का उपयोग करके अक्षमताएं वैसे भी शुरू होती हैं। अंगूठे का नियम है, यदि संभव हो तो प्रदर्शन से बचें, यदि प्रदर्शन चिंता का विषय है।

+2

क्योंकि यह 'system22222' से भी मेल खाता है। –

+0

ठीक है। मेरा जवाब अपडेट किया गया। – ty733420

+0

नाप कैसे है और सवाल का जवाब पसंद से बचें? LIKE 'system_' के बिना एक शाब्दिक के रूप में मूल्यांकन किया जाता है एक एकल चरित्र वाइल्डकार्ड नहीं। – Paparazzi

0

बेहद अक्षम और मैं Andriy's answer पसंद करूंगा, लेकिन आप वाइल्डकार्ड का उपयोग कर सकते हैं और लंबाई की तुलना भी कर सकते हैं।

select [id], [word] from [FTSwordDef] 
    where [word] like 'system%' 
    and LEN([word]) <= LEN('system%') 
+0

ठीक है सही जवाब देता है। लेकिन यह [system] जैसे 'system_' या [word] जैसे 'system' के लिए संक्षिप्त कट नहीं है – Paparazzi

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

  • कोई संबंधित समस्या नहीं^_^