2011-08-23 10 views
25

है, मुझे यह पता लगाना होगा कि मेरे SQL सर्वर तालिका में किसी विशेष फ़ील्ड में कितनी पंक्तियां हैं, केवल गैर-अल्फान्यूमेरिक वर्ण हैं।रिटर्न एसक्यूएल पंक्तियां जहां फ़ील्ड केवल गैर-अल्फान्यूमेरिक वर्ण

मुझे लगता है कि यह एक नियमित अभिव्यक्ति है जिसे मुझे [^ a-zA-Z0-9] के साथ की आवश्यकता है, लेकिन मुझे यकीन नहीं है कि सटीक वाक्यविन्यास मुझे पंक्तियों को वापस करने की आवश्यकता नहीं है यदि कोई वैध अल्फान्यूमेरिक वर्ण नहीं है वहाँ पर।

उत्तर

41

SQL सर्वर में नियमित अभिव्यक्तियां नहीं हैं। यह LIKE पैटर्न मिलान वाक्यविन्यास का उपयोग करता है जो समान नहीं है।

जैसा होता है, आप करीब हैं। बस अनुगामी वाइल्डकार्ड + प्रमुख और नहीं

WHERE whatever NOT LIKE '%[a-z0-9]%' 
+1

वाइल्डकार्ड वहां नहीं होना चाहिए क्योंकि वह केवल गैर-अल्फा न्यूमेरिक डेटा – cjk

+0

@cjk: सही है, मैंने गलत जगह पर "अस्वीकृति" डाली है। यह तारों को पाता है जिनमें – gbn

+0

में अल्फान्यूमेरिक्स नहीं हैं, धन्यवाद, बहुत अच्छा काम किया। – marcusstarnes

2

को स्थानांतरित आप छोटी स्ट्रिंग आप अलग अलग लंबाई के तार मैच के लिए कुछ तरह पैटर्न ('[^a-zA-Z0-9]', '[^a-zA-Z0-9][^a-zA-Z0-9]', ...) बनाने के लिए सक्षम होना चाहिए है, तो जरूरत है। अन्यथा आपको सीएलआर उपयोगकर्ता परिभाषित फ़ंक्शन और उचित नियमित अभिव्यक्ति का उपयोग करना चाहिए - Regular Expressions Make Pattern Matching And Data Extraction Easier

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