получение второго вхождения подстроки с помощью PatIndex - PullRequest
0 голосов
/ 10 июля 2020

С помощью этого запроса я получаю почтовый индекс по адресу, и он работает, но в некоторых случаях длина номера адреса равна 5, и поэтому я получаю его вместо почтового индекса, есть ли шанс получить последнее вхождение с PatIndex?

SELECT address,IIF((PatIndex('%[0-9][0-9][0-9][0-9][0-9]%', address)>0), substring(address, PatIndex('%[0-9][0-9][0-9][0-9][0-9]%', address), 5) , NULL) AS postalCode
from table 

1 Ответ

1 голос
/ 10 июля 2020

Если вы хотите получить ПОСЛЕДНЕЕ вхождение

  1. Обратный адрес
  2. Найти первое совпадение PatIndex в обратном адресе
  3. Обратить первую совпадающую подстроку

Таким образом

SELECT address,IIF((PatIndex('%[0-9][0-9][0-9][0-9][0-9]%', address)>0), reverse(substring(reverse(address), PatIndex('%[0-9][0-9][0-9][0-9][0-9]%', reverse(address)), 5)) , NULL) AS postalCode
from tbl

Запуск с db <> fiddle

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