Postgresql поддерживает просмотр за регулярным выражением? - PullRequest
7 голосов
/ 03 августа 2011

Если да, пожалуйста, предоставьте пример для поиска позади или альтернативу.

Я пытаюсь извлечь имя последовательности без '

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

Ответы [ 2 ]

8 голосов
/ 03 августа 2011

Он не поддерживал его на уровне sql, который я проверял в последний раз, но вы можете использовать plperl, чтобы обойти ограничение, если это абсолютно необходимо. (Тяжелое регулярное выражение, как правило, не относится к уровню БД, хотя ...)

В вашем конкретном примере рассмотрите использование вместо этого отрицательного класса: [^'] (избегайте его при необходимости) или не жадный шаблон: .*?.

Если добавить к этому конкретный вопрос, если вы фактически не создадите свою последовательность вручную, ее имя всегда будет:

tablename_colname_seq

Также, FWIW, следующие два значения по умолчанию ведут себя по-разному, если вы используете несколько схем и путей поиска в своем приложении:

nextval('foo'::regclass)  -- find foo once
nextval('foo'::text)      -- find foo each time
4 голосов
/ 09 мая 2018

Начиная с 9.6, он принимает положительные взгляды с использованием (?<=re), документация здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...