当我在redshift上使用负向前瞻(类似(?!abc)
)时,
redshift返回如下错误:
-- Find records that do not start with abc
select * from table_a where column_a ~ '^(?!abc).+$'
错误:PG :: InternalError:错误:重复运算符之前的前正则表达式无效。解析正则表达式时出错:' ^(?>>> HERE>>>!abc)。+ $'。 DETAIL:-----------------------------------------------错误:重复运算符之前的前一个正则表达式无效。解析正则表达式时出错:' ^(?>>> HERE>>>!abc)。+ $'。代码:8002上下文:T_regexp_init查询:1039510位置:funcs_expr.cpp:130
看起来Redshift不承认负面前瞻......
有什么方法可以在Redshift上使用它吗?
答案 0 :(得分:5)
度Acc。对于Amazon Redshift documentation,您可以与~
运算符一起使用的正则表达式符合POSIX标准。这意味着没有环视支持,您无法在这些模式中使用(?!...)
和(?<!...)
构造。
如果字符串不以模式开头,您似乎想要匹配字符串。在这种情况下,您可以使用否定正则表达式运算符版本!~
。
where column_a !~ '^abc'