2010-12-08 6 views
5

J'ai un code pour normaliser une adresse POB. Par exemple, l'un des normalisations inclus est:Comment remplacer un motif en utilisant T-SQL?

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

Maintenant, je veux faire quelque chose de semblable: Je veux trouver une POB qui est suivie directement par un numéro (sans espace entre les deux) et insérer un espace. Je veux trouver le modèle like POB[0-9] puis remplacer le "POB" par "POB". Comment puis-je accomplir cela? Peut-il être fait avec un simple remplacement? Ou dois-je utiliser une autre fonction, par exemple PATINDEX?

+0

Comment de nombreuses occurrences attendez-vous par chaîne s'il vous plaît? – gbn

+0

juste un. La solution de Barry est superbe – froadie

Répondre

8

Oui vous avez raison, vous pouvez utiliser 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 

Ou probablement une plus belle façon serait d'utiliser une déclaration case afin qu'il puisse être facilement incorporée dans une déclaration 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

parfait, merci! – froadie

Questions connexes