Эта функция чистого SQL обеспечивает последнюю позицию символа в строке, считая от 1. Она возвращает 0, если не найдена ... Но (большой отказ от ответственности) она прерывается, если символ представляет собой метасимвол регулярного выражения (.$^()[]*+
)
CREATE FUNCTION last_post(text,char) RETURNS integer AS $$
select length($1)- length(regexp_replace($1, '.*' || $2,''));
$$ LANGUAGE SQL IMMUTABLE;
test=# select last_post('hi#-#-#byte','#');
last_post
-----------
7
test=# select last_post('hi#-#-#byte','a');
last_post
-----------
0
Более надежное решение будет включать pl / pgSQL, как ответ rfusca.