我有代码来规范化POB地址。例如,其中一个规范化是:
set @string = replace(@string, 'pobox', 'pob')
现在我想做类似的事情:我想找到任何直接后跟数字的POB(中间没有空格)并插入空格。我想找到模式like POB[0-9]
,然后将“POB”替换为“POB”。我怎么能做到这一点?可以通过简单的替换来完成吗?或者我是否需要使用其他功能,例如PATINDEX
?
答案 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'