如何使用 T-SQL 替换模式?
Posted
技术标签:
【中文标题】如何使用 T-SQL 替换模式?【英文标题】:How do I replace a pattern using T-SQL? 【发布时间】:2011-05-22 02:26:58 【问题描述】:我有规范化 POB 地址的代码。例如,包含的规范化之一是:
set @string = replace(@string, 'pobox', 'pob')
现在我想做类似的事情:我想找到任何紧跟数字(中间没有空格)的 POB 并插入一个空格。我想找到模式like POB[0-9]
,然后将“POB”替换为“POB”。我怎样才能做到这一点?可以通过简单的替换来完成吗?还是我需要使用其他功能,例如PATINDEX
?
【问题讨论】:
请问您希望每个字符串出现多少次? 只有一个。 Barry 的解决方案看起来很棒 【参考方案1】:是的,你是对的,你可以使用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'
【讨论】:
以上是关于如何使用 T-SQL 替换模式?的主要内容,如果未能解决你的问题,请参考以下文章
T-SQL 替换函数缺少一些使用 nvarchar(max) 的匹配项