Вычеркивая слова в названиях улиц - PullRequest
0 голосов
/ 16 октября 2018

У меня есть следующие адреса, и мне нужно вычеркнуть только фактические названия улиц

Образцы данных:

DECLARE @T AS TABLE
(
    Address varchar(100)    
)

INSERT INTO @T (Address, Desired) VALUES
('Unit 5, 10-16 Smith Street'),
('180 Long Hill Road'),
('318 Great East Build Road'),
('50 Angus Street'),
('103 Inch Street'),
('Unit 1, 28A State Road')

Ожидаемые результаты:

Smith Street
Long Hill Road
Great East Build Road
Angus Street
Inch Street
State Road

Как это могло быть сделано?

У меня есть это до сих пор, и оно почти там, но оно возвращается Дорога как Роа и Улица и как Улица:

SELECT  SUBSTRING(
            TRIM(
                REPLACE(
                    SUBSTRING(
                        @String, 
                        CHARINDEX(',', @String), 
                        LEN(@String)
                    ), 
                    ',', 
                '')
            ), 
            CHARINDEX(' ', 
                TRIM(
                    REPLACE(
                        SUBSTRING(
                            @String, 
                            CHARINDEX(',', @String), 
                            LEN(@String)
                        )
                    , ',', '')
                )
            ) +0, 
            205
        )

1 Ответ

0 голосов
/ 16 октября 2018
select street into #tab from (
    select 'unit 5, 10-16 Smith Street' as street
    union all select '180 Long Hill Street'
    union all select '103 Inch Street') t

select
    reverse(rev) street,
    reverse(substring(rev,1,PATINDEX('%[^0-9][0-9]%',rev)))
from
    (select reverse(street) as rev from #tab) t

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