2010-11-05 15 views
6

नीचे MySQL अभिव्यक्ति के SQL सर्वर समतुल्य क्या है?MySQL REGEXP SQL सर्वर

... WHERE somefield REGEXP '^[[:blank:]]*ASD[[:blank:]]*$|^[[:blank:]]*ASD[[:blank:]]*[[.vertical-line.]]|[[.vertical-line.]][[:blank:]]*ASD[[:blank:]]*$|[[.vertical-line.]][[:blank:]]*ASD[[:blank:]]*[[.vertical-line.]]' 
+0

[SQL सर्वर सर्वर में नियमित अभिव्यक्तियों] के संभावित डुप्लिकेट? (Http://stackoverflow.com/questions/267921/regular-expressions-in-sql-server-sversvers) –

+1

मैं विशेष रूप से नियमित अभिव्यक्तियों की तलाश नहीं कर रहा हूं एमएसएसक्यूएल में, मैं बस किसी समकक्ष अभिव्यक्ति चाहता हूं। – akosch

+0

इस पोस्ट को चेक करें: http://stackoverflow.com/questions/267921/regular-expressions-in-sql- सर्वर- सर्वर उम्मीद है कि यह मदद करता है। – Hal

उत्तर

3

दुर्भाग्य mssql में regex समर्थन भयानक है, निकटतम ऑपरेटर है "की तरह" जो regex के की कार्यक्षमता एक मील से चूक जाता है। आपको रेगेक्स को कई तरह के बयानों में तोड़ना होगा और संभवतः कुछ गंदे स्ट्रिंग मैनिपुलेशन करना होगा जो आप प्राप्त करने का प्रयास कर रहे हैं।

उदाहरण के लिए हम [[: blank:]] को [] [स्पेस टैब] के साथ दोहरा सकते हैं) हम शून्य या उससे अधिक मिलान करने के लिए मजबूर नहीं कर सकते हैं, इसलिए इसके बजाय हमें उन्हें अभिव्यक्ति से बाहर करना होगा लेकिन यह 'एएसडी' से मेल खाता है इसलिए हमें असम्बद्ध स्ट्रिंग में एएसडी की उपस्थिति के लिए परीक्षण करने की आवश्यकता है।

मुझे लगता है कि निम्नलिखित आपके रेगेक्स को प्रतिस्थापित करेंगे लेकिन इसे जल्दी से फेंक दिया गया था ताकि इसे ध्यान से जांचें।

replace(replace(somefield,' ',''),' ','') in ('ASD','|ASD','|ASD|','ASD|') 
and 
somefield like '%ASD%' 

फिर से मेरे प्रतिस्थापन विवरणों में एक स्थान एक टैब है।