Использование регулярных выражений в Redshift для получения слова до сопоставленного шаблона - PullRequest
0 голосов
/ 27 октября 2019

Используя Regexp_substring (), найдите слово, предшествующее слову «OF» (1-е вхождение). Приведенный ниже код не работает, так как Redshift, похоже, не поддерживает сопоставление с не жадными образцами.

Пожалуйста, помогите

select regexp_substr('SAFETY COUNCIL OF PALM BEACH COUNTY, INC. ','[[:print:]].*?\\sOF\\s')

Query execution failed

Reason:
SQL Error [XX000]: ERROR: Invalid preceding regular expression prior to repetition operator.  The error occurred while parsing the regular expression fragment: 'rint:]].*?>>>HERE>>>\sOF\s'.
  Detail: 
  -----------------------------------------------
  error:  Invalid preceding regular expression prior to repetition operator.  The error occurred while parsing the regular expression fragment: 'rint:]].*?>>>HERE>>>\sOF\s'.
  code:      8002
  context:   T_regexp_init
  query:     0
  location:  funcs_expr.cpp:189
  process:   padbmaster [pid=74292]
  -----------------------------------------------

  Where: SQL function "regexp_substr" statement 1

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

select 'SAFETY OF COUNCIL OF PALM OF BEACH COUNTY, INC. ' as name, regexp_instr(name,'\\sOF\\s',1) as ind1,substr(name,1,ind1-1) as name_2,regexp_replace(name_2,regexp_substr(name_2,'.*\\s'),'')

1 Ответ

0 голосов
/ 29 октября 2019

Для достижения этой функции я обычно использую функцию split_part . То же самое работает в Postgresql.

select split_part('SAFETY COUNCIL OF PALM BEACH COUNTY, INC. ', 'OF',1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...