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

标签 sql replace design-patterns

我有代码来规范化 POB 地址。例如,包括的规范化之一是:

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

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

最佳答案

是的,您说得对,您可以使用 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'

关于sql - 如何使用 T-SQL 替换模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4385649/

相关文章:

sql - 如何根据条件更改列名和值?

java - Oracle 查询到 Hibernate 查询的转换

python - 如何克隆可迭代并递归替换特定值?

wpf - MVC/MVP/MVVM 什么鬼?

mysql - 加入和更新时间太长

mysql - mariadb 按小子集慢速分组

replace - 如何用fluentd中的特定字符串替换键值字符串

php - PHP中的htmlentities但保留html标签

c# - 抽象可重用库中的合成根

java - Java中的Singleton类如何处理这种情况?