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

fro*_*die 5 sql design-patterns replace

我有代码来规范化POB地址.例如,其中一个规范化包括:

set @string = replace(@string, 'pobox', 'pob')
Run Code Online (Sandbox Code Playgroud)

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

cod*_*ger 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
Run Code Online (Sandbox Code Playgroud)

或者可能更好的方法是使用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'
Run Code Online (Sandbox Code Playgroud)