Как заменить шаблон с помощью T-SQL? - PullRequest
5 голосов
/ 08 декабря 2010

У меня есть код для нормализации адреса POB.Например, одна из включенных нормализаций:

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

Теперь я хочу сделать что-то похожее: я хочу найти любую POB, за которой непосредственно следует число (без пробела между), и вставитьпространство.Я хочу найти шаблон like POB[0-9] и затем заменить «POB» на «POB».Как я могу сделать это?Можно ли это сделать с помощью простой замены?Или мне нужно использовать какую-то другую функцию, например PATINDEX?

1 Ответ

8 голосов
/ 08 декабря 2010

Да, вы правы, вы можете использовать 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...