2010-12-08 17 views
5

मेरे पास एक पीओबी पता सामान्य करने के लिए कोड है। उदाहरण के लिए, normalizations में से एक शामिल है:टी-एसक्यूएल का उपयोग करके मैं पैटर्न को कैसे बदलूं?

set @string = replace(@string, 'pobox', 'pob') 

अब मैं इसी तरह कुछ करना चाहता हूँ: मैं किसी भी POB कि सीधे एक नंबर (बीच में एक जगह के बिना) द्वारा पीछा किया जाता खोजने के लिए और एक अंतरिक्ष सम्मिलित करना चाहते हैं। मैं पैटर्न like POB[0-9] पैटर्न ढूंढना चाहता हूं और फिर "पीओबी" के साथ "पीओबी" को प्रतिस्थापित करना चाहता हूं। मैं यह कैसे हासिल कर सकता हूं? क्या यह एक साधारण प्रतिस्थापन के साथ किया जा सकता है? या मुझे PATINDEX जैसे कुछ अन्य फ़ंक्शन का उपयोग करने की आवश्यकता है?

+0

कैसे क्या आप कई स्ट्रिंग प्रति स्ट्रिंग की अपेक्षा करते हैं? – gbn

+0

सिर्फ एक। बैरी का समाधान बहुत अच्छा लगता है – froadie

उत्तर

8

हाँ आप सही हैं आप PATINDEX

Declare @searchstring varchar(50) 

Set @searchstring = 'POB9090' 

If (PatIndex('POB[0-9]%', @searchString) > 0) 
Begin 

Set @searchstring = Replace(@searchString, 'POB', 'POB ') 

End 

Select @searchString 

या शायद एक अच्छे तरह से उपयोग कर सकते हैं हो सकता है एक case कथन का उपयोग करने के लिए इतना है कि यह आसानी से एक select बयान करने के लिए शामिल किया जा सकता

Declare @searchstring varchar(50) 

Set @searchstring = 'POB9090' 

Select Case 
     When PatIndex('POB[0-9]%', @searchString) > 0 Then Replace(@searchString, 'POB', 'POB ') 
     Else @searchString 
     End 'SearchString' 
+0

सही, धन्यवाद! – froadie

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