簡體   English   中英

postgresql是否支持lookbehind regexp?

[英]Does postgresql support lookbehind regexp?

如果是,請提供一個關於lookbehind或替代的示例。

我正在嘗試提取序列名稱而不是'

select table_name,
       column_name,
       regexp_replace(substring(column_default from '''.*(?='')'),'''','','g') as sequence
FROM information_schema.columns 

最后我檢查了它在sql級別不支持它,但如果絕對必要,你可以使用plperl來解決限制。 (重復的regexing通常不屬於DB級別,但......)

在您的特定示例中,請考慮使用否定類: [^'] (根據需要將其轉義) 或非貪婪的通配符: .*?

除此之外,您需要手動創建序列,其名稱將始終為:

tablename_colname_seq

此外,如果您在應用中使用多個模式和搜索路徑,則以下兩個默認值具有不同的行為:FWIW:

nextval('foo'::regclass)  -- find foo once
nextval('foo'::text)      -- find foo each time

從9.6開始,它確實接受使用(?<=re) 這里的文檔的正面觀察。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM