В Postgres 9.4+ вы можете использовать WITH ORDINALITY
для определения последней строки в regexp_matches
результате:
SELECT m
FROM regexp_matches('abc', '.', 'g') WITH ORDINALITY r(m,n)
ORDER BY n DESC
LIMIT 1
В более старых версиях вы можете сделать это с помощью оконной функции (хотя она полагается на естественный порядок набора результатов, чего обычно лучше избегать):
SELECT last_value(m) OVER ()
FROM regexp_matches('abc', '.', 'g') r(m)
LIMIT 1