Я запрашиваю данные из AWS Redshift с помощью регулярных выражений POSIX.Однако у меня возникают трудности с поиском всей строки путем нахождения нескольких слов без учета порядка.
Таблица выглядит следующим образом:
ID | full_term
123 | juice apple farm
123 | apple juice original
123 | banana juice
Например, я ищу целую строку, которая содержит как apple
, так и juice
, поэтому я ожидаю получить первоедва ряда.Мой текущий запрос:
SELECT full_term FROM data_table
WHERE full_term ~ '(.*apple+)(.*juice+).*$'
Однако порядок имеет значение в этом методе.Я также попытался full_term ~ '(?=.*apple+)(?=.*juice+).*$'
, но получил сообщение об ошибке [Amazon](500310) Invalid operation: Invalid preceding regular expression prior to repetition operator. The error occurred while parsing the regular expression fragment: '(?>>>HERE>>>=.*apple+)'.
Я только что понял, ?=
не работает в Redshift.
Является ли использование UDF единственным решением в этом случае?Кроме того, я хочу только точные apple
и juice
в полном объеме.То есть pineapple
не должно быть включено.