如何使用T-SQL替换模式?

时间:2010-12-08 08:52:24

标签: sql replace design-patterns

我有代码来规范化POB地址。例如,其中一个规范化是:

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

现在我想做类似的事情:我想找到任何直接后跟数字的POB(中间没有空格)并插入空格。我想找到模式like POB[0-9],然后将“POB”替换为“POB”。我怎么能做到这一点?可以通过简单的替换来完成吗?或者我是否需要使用其他功能,例如PATINDEX

1 个答案:

答案 0 :(得分: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'