如果是,请提供一个关于lookbehind或替代的例子。
我正在尝试在没有'
的情况下提取序列名称select table_name,
column_name,
regexp_replace(substring(column_default from '''.*(?='')'),'''','','g') as sequence
FROM information_schema.columns
答案 0 :(得分:8)
最后我检查过它在sql级别不支持它,但如果绝对必要,你可以使用plperl解决限制。 (重复regexing通常不属于DB级别,但是......)
在您的特定示例中,请考虑使用否定类:[^']
(根据需要转义)或non-greedy wildcard: .*?
。
除此之外,您需要手动创建序列,其名称将始终为:
tablename_colname_seq
同样FWIW,如果您在应用中使用多个架构和搜索路径,则以下两个默认值具有不同的行为:
nextval('foo'::regclass) -- find foo once
nextval('foo'::text) -- find foo each time
答案 1 :(得分:4)
从9.6开始,它确实接受使用(?<=re)
,文档here的正面观察。