Извлеките номер из URL-адреса в красном смещении

#sql #regex #amazon-web-services #amazon-redshift

Вопрос:

Я хотел бы извлечь идентификатор (номер) из множества URL-адресов в красном смещении. Я знаю, что могу использовать regexp_substr для этой цели, но мои знания регулярных выражений слабы. Вот несколько примеров URL-адресов:

 /checkout?feature=ADVANCED_SEARCHamp;upgradeRedirect=/mentions?top_ids=1222874068amp;btv=feature_ADVANCED_SEARCH /checkout?feature=ADVANCED_SEARCHamp;trigger=mentioning-author-rwamp;upgradeRedirect=/mentions?top_ids=160447990  

После анализа приведенных выше URL-адресов я хотел бы, чтобы вывод был:

 1222874068 160447990  

Обратите внимание, что параметр top_ids остается постоянным и поможет разбить URL-адрес. Я также пробовал использовать несколько версий split_part . Но в URL-адресе могут быть изменения, из-за которых он может сломаться. Поэтому использование регулярного выражения может быть лучшей идеей.

Любая помощь будет очень признательна.

Ответ №1:

Вы можете использовать:

 select regexp_substr(column,'top_ids=([0-9]*)', 1, 1, 'e')  

'e' Извлекает подстроку в (скобках).

Ответ №2:

Попробуйте что-нибудь вроде этого:

 SUBSTR(REGEXP_SUBSTR(yourcolumn, 'top_ids=([0-9]{2,})'), 11, 20)  

Просто ищу «top_ids=» и 2 или более цифр после него.
Затем удаляет первые 10 символов.