如何使用 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) 的匹配项

如何使用与号 (&) 替换匹配模式中的字符

t-sql 用户定义函数,用表中的查找替换文本

如何找到输入列表的匹配模式,然后使用 python 用正确的模式转换替换找到的模式

如何在 python 中使用正则表达式替换模式?

如何使用 T-SQL 透视表?