2009-09-23 15 views
5

में केस-असंवेदनशील प्रतिस्थापन() मेरे पास एक ऐसा क्षेत्र है जिसमें 'ब्लैह-ओवर', 'ब्लाह-ओवीआर' इत्यादि जैसे तार शामिल हैं और 'ओवर के बिना उन्हें चुनना चाहते हैं।एसक्यूएल सर्वर 2000

SELECT field as "before", REPLACE(field, 'OVER', '') as "after" 

कैसे मैं सिर्फ उन सब को हर मामले को कवर करने के लिए प्रयास के बिना कहने के लिए 'Blah-' (क्या छोड़ दिया है के मामले संरक्षण) मिलता है: यह केवल पहला मामला (ताकि बात करने के लिए) और दूसरों को नहीं पकड़ता है एक और नेस्टेड रेप्लेस समारोह के साथ संयोजन?

+0

धन्यवाद, रीमस, मैं सही टैग की तलाश में था लेकिन उस कॉम्बो की कोशिश नहीं की थी। – Kev

उत्तर

8

एक केस संवेदी मिलान का उपयोग करें:

SELECT field as "before", REPLACE(field COLLATE SQL_Latin1_General_Cp1_CI_AI 
, 'OVER', '') as "after" 

मिलान नामों की सूची के लिए COLLATE देखें तो आप अपने डेटा के लिए एक उपयुक्त का चयन करें।

अद्यतन

ठीक है, तो मैं अपने वास्तविक अनुरोध याद किया (इनपुट के परिवर्तन के मामले में, नहीं केस-संवेदी लगता है)। उचित समाधान है ... इनपुट को बदलने के लिए नहीं बल्कि अपने डेटा के लिए पर्याप्त संयोजन का उपयोग करें। यदि डेटा किसी विशिष्ट प्रारूप में प्रदर्शित होना चाहिए, तो क्लाइंट में प्रदर्शन विकल्प का उपयोग करें, उदाहरण के लिए। सीएसएस text-transform:uppercase, सर्वर में नहीं चुनें।

इस परिवर्तन को करने के लिए कोई भी अंतर्निहित SQL फ़ंक्शन नहीं है, लेकिन का उपयोग करने वाले CLR function बनाने के लिए छोटा है। (एसक्यूएल 2005 पर, एसक्यूएल 2000 पर नहीं ... दोह, मुझे और कॉफ़ी चाहिए)।

+0

यह वाक्यविन्यास मेरे लिए नया है! धन्यवाद! – Kev

0

मैं SQL सर्वर से परिचित नहीं हूं, लेकिन शायद यह आपको नियमित अभिव्यक्तियों का उपयोग करने की अनुमति देता है। ये आमतौर पर केस-असंवेदनशील मोड (i-flag के माध्यम से सेट) प्रदान करते हैं।

अन्यथा आप प्रतिस्थापन कॉल से पहले अपरकेस कर सकते हैं, उदा।

SELECT field as "before", REPLACE(UPPER(field), 'OVER', '') as "after" 
+0

यह 'ब्लाह-' पैदा करता है। तो यह न केवल 'ओवर' को बदलकर इनपुट स्ट्रिंग को बदलता है। –

+0

एक साइट पर मैंने सुझाव दिया कि आपको 2000 पर रेगेक्स का उपयोग करने के लिए कुछ कस्टम डीएलएल स्थापित करने की आवश्यकता है। साथ ही, यह सभी 'ब्लाह को पूंजीकृत के रूप में लौटाता है - माफ करना, मुझे यह निर्दिष्ट करना चाहिए कि प्रश्न में, संपादित होगा। – Kev

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