#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. Какие СУБД вы используете? (Приведенные выше вопросы относятся к конкретному продукту.)