【发布时间】:2019-10-27 14:33:22
【问题描述】:
使用 Regexp_substring() 查找单词“OF”之前的单词(第一次出现)。以下代码不起作用,因为 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'),'')
【问题讨论】:
-
@JohnRotenstein 我不认为它是另一个问题的重复,我已经修改了标题以最好地代表这个问题。谢谢
-
仅供参考,该链接问题包括一种通过控制贪婪来实现结果的方法。
标签: amazon-redshift