2012-09-04 19 views
48

मैंने सोचा कि यह CONTAINS था, लेकिन यह मेरे लिए काम नहीं कर रहा है।मैं कैसे बता सकता हूं कि एक वर्चर चर में एक सबस्ट्रिंग है या नहीं?

मैं यह करने के लिए देख रहा हूँ:

IF CONTAINS(@stringVar, 'thisstring') 
    ... 

मैं एक select या किसी अन्य, चाहे उस चर एक स्ट्रिंग के आधार पर चलाने के लिए है और मैं समझ नहीं है कि यह कैसे काम करने के लिए मिलता है। मैं देख रहे सभी उदाहरणों में कॉलम का उपयोग कर रहे हैं।

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

where @stringVar like '%thisstring%' 

एक प्रश्न बयान में है कि:

उत्तर

62

मानक SQL रास्ता की तरह उपयोग करने के लिए है। तुम भी TSQL में ऐसा कर सकते हैं:

if @stringVar like '%thisstring%' 
+1

... कि मुझे उदास कर देता है। मैंने कोशिश की कि दूसरे दिन और यह काम नहीं किया। मैंने कुछ गलत टाइप किया है क्योंकि यह अभी काम करता है। मैं 3 दिन के सप्ताहांत से पहले शुक्रवार को देर से कुछ करने के लिए तैयार हूं। मैंने जो कुछ भी मुझे पता है, उसके लिए मैंने पूरे कथन को पीछे छोड़ दिया होगा। धन्यवाद! – Yatrix

+3

@Yatrix। । । यदि आप काम नहीं करते हैं तो आप charindex ('thisstring', @stringVar) का भी उपयोग कर सकते हैं। –

+0

@Asad। । । बेशक यह काम करेगा। वाइल्डकार्ड '%' शून्य या अधिक वर्णों से मेल खाता है। –

6

CONTAINS एक पूर्ण पाठ इंडेक्स क्षेत्र के लिए है - यदि नहीं, तो LIKE

22

के बजाय LIKE (जो करता अन्य टिप्पणीकर्ताओं के रूप में काम का सुझाव दिया है) का उपयोग करें, आप कर सकते हैं वैकल्पिक रूप से CHARINDEX का उपयोग करें:

declare @full varchar(100) = 'abcdefg' 
declare @find varchar(100) = 'cde' 
if (charindex(@find, @full) > 0) 
    print 'exists' 
5
IF CHARINDEX('TextToSearch',@TextWhereISearch, 0) > 0 => TEXT EXISTS 

    IF PATINDEX('TextToSearch', @TextWhereISearch) > 0 => TEXT EXISTS 

    Additionally we can also use LIKE but I usually don't use LIKE.