I have a person table where the name column contains names, some in the format “first last” and some in the format “first”.
My query
SELECT name,
SUBSTRING(name FROM 1 FOR POSITION(' ' IN name) ) AS first_name
FROM person
creates a new row of first names, but it doesn’t work for the names which only have a first name and no blank space at all.
I know I need a CASE statement with something like 0 = (' ', name) but I keep running into syntax errors and would appreciate some pointers.
Advertisement
Answer
Just use split_part():
SELECT split_part(name, ' ', 1) AS first_name
, split_part(name, ' ', 2) AS last_name
FROM person;
Related: