2011-08-03 7 views
3

もしそうなら、plsはlookbehindまたは代替の例を提供します。 postgresqlはlookbehind regexpをサポートしていますか?

は、私はそれは私が最後にチェックSQLレベルでそれをサポートしていませんでした

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

答えて

4

「なしシーケンス名を抽出しようとしているが、あなたは絶対に必要に応じて制限を回避するためにてplperlを使用することができます。あなたの特定の例では

を(ヘビーregexingは、一般的に...しかし、DBのレベルでは属していない)、代わりに負のクラスを使用することを検討してください:[^'](必要に応じてそれをエスケープ)、またはnon-greedy wildcard: .*?。また

tablename_colname_seq 

FWIWあなたが複数のスキーマと検索を使用している場合は、次の2つのデフォルトが異なる振る舞いを持っています。これに追加する

は、あなたが実際にその名前が常になります手動でシーケンスを作成しない限り、あなたの特定の質問を再あなたのアプリ内のパス:

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

先読みは、後読みを働いているが時々 – danidacar

+0

ではありません後読み、ここで説明したように、一方の側でグループを取り込むと交互に置き換えることができます。http://www.rexegg.com/regex- best-trick.html –

関連する問題