I have a field in a PostgreSQL table, name, with this format:
JOHN^DOE BILLY^SMITH FIRL^GREGOIRE NOEL^JOHN
and so on. The format is LASTNAME^FIRSTNAME. The table has ID, name, birthdate and sex fields.
How can I do a SQL statement with GROUP BY FIRSTNAME only ? I have tried several things, and I guess regexp_match could be the way, but I don’t know how to write a correct regular expression for this task. Can you help me ?
Advertisement
Answer
I would recommend split_part():
group by split_part(mycol, '^', 1)
mycol | split_part :------------ | :--------- JOHN^DOE | JOHN BILLY^SMITH | BILLY FIRL^GREGOIRE | FIRL NOEL^JOHN | NOEL