从单列中分离名字和姓氏

Jel*_*ick 1 sql postgresql substring delimiter

我有一张person桌子name列包含名称,一些格式为“first last”,一些格式为“first”。

我的查询

SELECT name,
SUBSTRING(name FROM 1 FOR POSITION(' ' IN name) ) AS first_name
FROM person
Run Code Online (Sandbox Code Playgroud)

创建一行新的名字,但它不适用于只有名字而根本没有空格的名字。

我知道我需要一个CASE类似的语句,0 = (' ', name)但我一直遇到语法错误,希望得到一些指导。

Erw*_*ter 5

只需使用split_part()

SELECT split_part(name, ' ', 1) AS first_name
     , split_part(name, ' ', 2) AS last_name
FROM person;
Run Code Online (Sandbox Code Playgroud)

SQL小提琴。

有关的: