Cut string after first occurrence of a character

Gismo Ranas picture Gismo Ranas · Apr 8, 2015 · Viewed 12.5k times · Source

I have strings like 'keepme:cutme' or 'string-without-separator' which should become respectively 'keepme' and 'string-without-separator'. Can this be done in PostgreSQL? I tried:

select substring('first:last' from '.+:')

But this leaves the : in and won't work if there is no : in the string.

Answer

Erwin Brandstetter picture Erwin Brandstetter · Apr 8, 2015

Use split_part():

SELECT split_part('first:last', ':', 1) AS first_part

Returns the whole string if the delimiter is not there. And it's simple to get the 2nd or 3rd part etc.

Substantially faster than functions using regular expression matching. And since we have a fixed delimiter we don't need the magic of regular expressions.

Related: