2

我是一个自学 SQL Server 来管理邮件数据的小企业主。这个资源在过去帮助我很多次查看其他人的问题,但是,这是第一次提出问题。使用 SQL Server 2017。

在地址栏中,我想将缩写更改为拼写单词。例如,我想将“St”更改为“Street”。我知道如何在 T-SQL 中进行基本的查找和替换,但我遇到的是,如果“St”是实际街道名称的名称,它也会发生变化。例如,“123 Stripe St”变为“123 Streettripe Street”。我想要的输出是“123 Stripe Street”。

我正在使用以下

UPDATE Person
SET Addr = REPLACE(Addr, 'St', 'Street')
WHERE Addr like '%St'

有人可以帮我替换地址的缩写部分吗?

很感谢任何形式的帮助。

4

2 回答 2

2

规范化地址可能是一个滑坡。您可能会对 Blvd 的变化感到惊讶。这就是为什么我建议您看一下数据库中的地址标准化

就是说,这是一个简单且易于扩展的选项

例子

Declare @YourTable table (id int,Addr varchar(150))
Insert Into @YourTable values
 (1,'123 Stripe St')
,(2,'555 SW Main St, Providence, RI')


Update @YourTable
 Set Addr = ltrim(rtrim(
            replace(
            replace(' '+Addr+' ',' St ',' Street ')
            ,' St, ',' Street, ')
            ))

Select * from @YourTable

退货

id  Addr
1   123 Stripe Street
2   555 SW Main Street, Providence, RI  -- Notice middle St with a comma.
于 2019-01-05T01:15:20.007 回答
1

对于这个特定示例,您可以执行以下操作:

UPDATE Person
    SET Addr = LEFT(Addr, LEN(Addr) - 2) + 'Street'
    WHERE Addr like '% St';

但是,对于字符串中间的更一般的模式,这将变得更具挑战性。SQL Server 不是此类字符串操作的最佳工具。

于 2019-01-05T00:23:08.177 回答