Разделение номера дома и адреса, но что, если номера дома нет

#sql #substring #street-address #patindex

Вопрос:

У меня есть запрос, который требует, чтобы я отделил номер дома от адреса, а оставшаяся часть адреса становится новым адресом.

  SELECT IIF (PATINDEX('%[0-9]%', left(InvoiceAddress1, charindex( ' ', InvoiceAddress1)-1)) > 0,
         left(InvoiceAddress1, charindex( ' ', InvoiceAddress1)-1),  '')    AS [Site House Number]
 

Но теперь у меня осталась вторая половина адреса

 right( SUBSTRING(InvoiceAddress1,PATINDEX('% [0-9]%',InvoiceAddress1) 1,PATINDEX('%, %',InvoiceAddress1   ', ')-PATINDEX('% [0-9]%',InvoiceAddress1 )-1),
    len(SUBSTRING(InvoiceAddress1,PATINDEX('% [0-9]%',InvoiceAddress1) 1,PATINDEX('%, %',InvoiceAddress1   ', ')-PATINDEX('% [0-9]%',InvoiceAddress1 )-1)) - charindex( ' ', SUBSTRING(InvoiceAddress1,PATINDEX('% [0-9]%',InvoiceAddress1) 1,PATINDEX('%, %',InvoiceAddress1   ', ')-PATINDEX('% [0-9]%',InvoiceAddress1 )-1)))    
 
 

Это прекрасно работает, если адрес был 123 Главная улица или 321 Другая улица, но как бороться, если нет номера дома?

Что, если адрес просто Мэйн-стрит? Я бы хотел, чтобы адрес оставался Главной улицей, но все равно фиксировал события, где также указан номер дома? Пример таблицы

 1234 Main Street             1234            Main Street
4321 Our Street              4321            Our Street
South Street                                 South Street
1st Street                                   1st Street
 

Помощь признательна

Комментарии:

1. Какие СУБД вы используете? (Приведенные выше вопросы относятся к конкретному продукту.)