Для этого можно использовать regexp_matches()
:
select (regexp_matches(input, '\{(\$[^\}]+)\}', 'g'))[1]
, где input
- ваша строка, которую вы хотите проанализировать.
regexp_matches()
возвращает несколько совпадений в строке в виде массива , (..)[1]
затем выбирает первый элемент этого массива.
Я думаю, что это должно работать и с Postgres 9.2.
Онлайн пример