Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cut string after first occurrence of a character

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.

like image 316
Gismo Ranas Avatar asked Apr 08 '15 18:04

Gismo Ranas


1 Answers

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:

  • Split comma separated column data into additional columns
like image 93
Erwin Brandstetter Avatar answered Sep 18 '22 12:09

Erwin Brandstetter