2015-03-02 64 views
1

我有一个person表,其中name列包含名称,其中一些格式为“首位”,一些格式为“首位”。分开单列第一个和最后一个名字

我查询

SELECT name, 
SUBSTRING(name FROM 1 FOR POSITION(' ' IN name)) AS first_name 
FROM person 

创建名字的新行,但它并不适用于它只有一个名字,没有空格的所有名称的工作。

我知道我需要一个CASE声明,像0 = (' ', name),但我一直在遇到语法错误,并会欣赏一些指针。

回答

0

1.

select 
substring(name from '^([\w\-]+)') first_name, 
substring(name from '\s(\w+)$') last_name 
from person 

2.

select (regexp_split_to_array(name, ' '))[1] first_name 
    , (regexp_split_to_array(name, ' '))[2] last_name 
from person 
相关问题