SQL Server: найти и заменить часть определенной части строки, которая встречается в строке более одного раза - PullRequest
0 голосов
/ 05 января 2019

Я владелец малого бизнеса, который научил себя SQL Server управлять почтовыми данными. Этот ресурс помог мне много раз в прошлом, глядя на вопросы других людей, однако, это первый раз, когда задаю вопрос. Использование SQL Server 2017.

В столбце адреса я хочу поменять сокращения на прописанные слова. Например, я хочу изменить «St» на «Street». Я знаю, как выполнить базовый поиск и замену в T-SQL, но я сталкиваюсь с тем, что, если в названии фактического названия улицы указано «St», оно также меняется. Например, «123 Stripe St» становится «123 Streetripe Street». Мой желаемый результат будет «123 Stripe Street».

Я использую следующее

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

Может кто-нибудь помочь мне заменить только сокращенную часть адреса?

Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Нормализация адресов может быть скользким уклоном. Вы можете быть удивлены вариациями бул. Вот почему я предлагаю вам взглянуть на Стандартизация адресов в базе данных

Как уже упоминалось, здесь есть простой и легко расширяемый вариант

Пример

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.
0 голосов
/ 05 января 2019

Для этого конкретного примера вы можете сделать:

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

Однако, для более общих паттернов в середине строки это будет более сложным. SQL Server не является оптимальным инструментом для этого типа манипулирования строками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...