Use
split_part()
:SELECT split_part('first:last', ':', 1) AS first_part
Retorna a string inteira se o delimitador não estiver lá. E é simples obter a 2ª ou 3ª parte etc.
Substancialmente mais rápido do que funções usando correspondência de expressão regular. E como temos um delimitador fixo, não precisamos da mágica das expressões regulares.
Relacionado: