2009-08-07 12 views
50

टी-एसक्यूएल में, आप कैसे जांचेंगे कि स्ट्रिंग में कोई अन्य स्ट्रिंग नहीं है या नहीं?जांचें कि स्ट्रिंग में कोई अन्य स्ट्रिंग नहीं है

मेरे पास nvarchar है जो "संतरे सेब" हो सकता है।

मैं एक अद्यतन करना चाहता हूं, उदाहरण के लिए, एक कॉलम में "सेब" नहीं है।

यह कैसे किया जा सकता है?

+1

कर सकते हैं कृपया अपने प्रश्न खिताब के साथ और अधिक सटीक हो। '" में एक और स्ट्रिंग है "! =" में गलत शीर्षक के लिए एक और स्ट्रिंग "' – lordcheeto

+0

-1 नहीं है। –

+1

मैंने शीर्षक बदल दिया। कभी भी देर से बेहतर :) – Dofs

उत्तर

75
WHERE NOT (someColumn LIKE '%Apples%') 
+1

मैं इसके बारे में क्यों नहीं सोचा था, मैं कुछ और अधिक उन्नत के लिए जा रहा था :) – Dofs

+0

डबल के बजाय सिंगल कोट्स का उपयोग करें: '% सेब%)। मैंने पोस्ट को संपादित करने की कोशिश की लेकिन एसओ को छः वर्ण या उससे अधिक होने की आवश्यकता है। – DeveloperDan

+0

@ डेवलपरदान - धन्यवाद। तय की। –

24

या वैकल्पिक रूप से, तो आप इस इस्तेमाल कर सकते हैं:

WHERE CHARINDEX(N'Apples', someColumn) = 0 

सुनिश्चित नहीं हैं कि एक बेहतर प्रदर्शन करती है - आप परीक्षण होगा यह! :-)

मार्क

अद्यतन: प्रदर्शन अन्य समाधान के साथ एक सममूल्य पर काफी हो रहा है (जहां someColumn नहीं की तरह '% सेब%') - तो यह आपके निजी प्राथमिकता का वास्तव में सिर्फ एक सवाल है ।

+0

प्रदर्शन मेरे मामले में इतना बड़ा मुद्दा नहीं है। – Dofs

+2

+1: यदि मिलान किया जाने वाला टेक्स्ट 'स्थिर' जैसे स्थिर स्ट्रिंग की बजाय गतिशील है, तो यह विधि बेहतर है, क्योंकि आपको '%', '_' जैसे वाइल्डकार्ड के बारे में चिंता करने की आवश्यकता नहीं है LIKE ऑपरेटर द्वारा मिलान किया जाना चाहिए। – Joe

+0

@ जो यदि आप इसके बारे में pedantic होना चाहते हैं, तो यह सभी मामलों में भी काम नहीं करेगा। CHARINDEX केस संवेदनशील नहीं है। इसलिए यदि आप सेब के क्षेत्र में एक ऐप्पल की तलाश में थे तो आपको पूरा मिल जाएगा। मुझे पता है कि यह पोस्ट होने के बाद से कुछ सालों रहे हैं, लेकिन फिर भी। दोनों उत्तर विषय वस्तु के आधार पर मान्य हैं और कोई भी जवाब सभी अड्डों को कवर नहीं करता है। स्वीकृत उत्तर के लिए आप से -1 -1 बस थोड़ा सा लगता है ... सही शब्द है? – DDuffy

10

अपने कहां शर्त के रूप में इस का प्रयोग करें

WHERE CHARINDEX('Apples', column) = 0 
7

जवाब आप के खिलाफ तुलना करने के लिए स्थिर पाठ मान लिया गया। यदि आप किसी अन्य स्तंभ के खिलाफ तुलना (जैसे कि, आप दो तालिकाओं शामिल हो रहे हैं, और लोगों को खोजने के लिए जहां एक मेज से एक कॉलम एक और मेज से एक कॉलम का हिस्सा है चाहते हैं) करना चाहते हैं, तो आप इस

WHERE NOT (someColumn LIKE '%' || someOtherColumn || '%') 
+1

+1, आप भी पसंद नहीं सिंटैक्स का उपयोग कर सकते हैं। – Dunc

+2

काम नहीं करेगा अगर कुछ अन्य कॉलम में '%', '_' जैसे वाइल्डकार्ड वर्ण शामिल हैं। – Joe

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