2010-12-08 10 views
5

Tengo un código para normalizar una dirección POB. Por ejemplo, una de las normalizaciones incluidos es:¿Cómo reemplazo un patrón usando T-SQL?

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

Ahora quiero hacer algo similar: Quiero encontrar cualquier POB que es seguido directamente por un número (sin espacio entre ellos) e insertar un espacio. Quiero encontrar el patrón like POB[0-9] y luego reemplazar el "POB" con "POBO". ¿Cómo puedo lograr esto? ¿Se puede hacer con un simple reemplazo? ¿O necesito usar alguna otra función, como PATINDEX?

+0

Cómo muchas ocurrencias esperas por cadena, por favor? – gbn

+0

solo uno. La solución de Barry se ve genial – froadie

Respuesta

8

Sí que son correctos puede utilizar 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 

O probablemente una manera más agradable sería el uso de una declaración case de modo que pueda ser fácilmente incorporado en un comunicado 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

perfecto, gracias! – froadie

Cuestiones relacionadas